Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 使用位于网络驱动器上的TCL应用程序打开Web URL_Windows_Url_Tcl - Fatal编程技术网

Windows 使用位于网络驱动器上的TCL应用程序打开Web URL

Windows 使用位于网络驱动器上的TCL应用程序打开Web URL,windows,url,tcl,Windows,Url,Tcl,我刚刚完成了一个TCL Db应用程序,它包括一个打开网页URL的功能。我的代码如下($adr是url): eval exec[自动执行开始]\“\”[列表$adr] 这段代码在我的Windows工作站上运行良好。但是,将应用程序放置在网络驱动器上后,我收到以下错误: “\Drive\Share\Folder\Subfolder” CMD.EXE是以上述路径作为当前目录启动的。 不支持UNC路径。默认为Windows目录 网页仍然打开,但我仍然得到TCl错误 soemone知道在服务器或网络环境中

我刚刚完成了一个TCL Db应用程序,它包括一个打开网页URL的功能。我的代码如下($adr是url):

eval exec[自动执行开始]\“\”[列表$adr]

这段代码在我的Windows工作站上运行良好。但是,将应用程序放置在网络驱动器上后,我收到以下错误:

“\Drive\Share\Folder\Subfolder” CMD.EXE是以上述路径作为当前目录启动的。 不支持UNC路径。默认为Windows目录

网页仍然打开,但我仍然得到TCl错误

soemone知道在服务器或网络环境中使用TCL打开URL的更好方法吗

谢谢,


DFM

当Tcl尝试执行您指定的URL时,显示的消息实际上是由Windows命令解释器CMD.EXE生成的。当使用设置为网络路径的当前工作目录启动时,它会向stderr生成警告消息

还有两件事你可以试试:

  • 使用-Ignoresterr运行exec。这将导致此特定警告消息(以及写入stderr的任何其他消息/错误)不会在Tcl中产生错误。当您使用catch包装代码时,基本上忽略了这个错误和任何其他错误,这可能并不理想。 eval exec -ignorestderr [auto_execok start] \"\" [list $adr] eval exec-Ignoresterr[自动执行开始]\“\”[列表$adr]
  • 将您的工作目录设置为exec之前的另一个路径,这是CMD.EXE在打印出该警告后正在执行的操作: cd $::env(TEMP) eval exec [auto_execok start] \"\" [list $adr] cd$::环境(临时) eval exec[自动执行开始]\“\”[列表$adr]
    当然,要小心运行来自不可信输入的任意命令和参数,否则有人可能会将您的应用程序用作后门来运行恶意命令。

    当Tcl尝试执行您指定的URL时,显示的消息实际上是由Windows命令解释器CMD.EXE生成的。当使用设置为网络路径的当前工作目录启动时,它会向stderr生成警告消息

    还有两件事你可以试试:

  • 使用-Ignoresterr运行exec。这将导致此特定警告消息(以及写入stderr的任何其他消息/错误)不会在Tcl中产生错误。当您使用catch包装代码时,基本上忽略了这个错误和任何其他错误,这可能并不理想。 eval exec -ignorestderr [auto_execok start] \"\" [list $adr] eval exec-Ignoresterr[自动执行开始]\“\”[列表$adr]
  • 将您的工作目录设置为exec之前的另一个路径,这是CMD.EXE在打印出该警告后正在执行的操作: cd $::env(TEMP) eval exec [auto_execok start] \"\" [list $adr] cd$::环境(临时) eval exec[自动执行开始]\“\”[列表$adr]
    当然,要小心运行来自不可信输入的任意命令和参数,否则有人可能会将您的应用程序用作后门来运行恶意命令。

    我将代码更改为:catch{eval exec[auto\u execok start]\“\”[list$adr]}这似乎消除了错误,打开网页时。我将代码更改为:catch{eval exec[auto\u execok start]\“\”[list$adr]}这似乎已经消除了打开网页时的错误。+1,记住最后一部分:否则它可能会导致严重的安全问题。+1,请记住最后一部分:否则,它可能会导致严重的安全问题。