在2008年vb.net我想执行驻留在另一台计算机上的批处理文件。 没有错误,但没有任何反应。 下面是代码:

Dim pStart As New System.Diagnostics.Process
Dim startInfo As New System.Diagnostics.ProcessStartInfo(serverpath & "\file.bat")
startInfo.RedirectStandardOutput = True
startInfo.WindowStyle = ProcessWindowStyle.Hidden
startInfo.UseShellExecute = False
pStart = System.Diagnostics.Process.Start(startInfo)
pStart.WaitForExit()
pStart.Close()
有帮助吗?

解决方案

要在远程计算机上运行的过程可以使用的Sysinternals自由 PSEXEC

您可以用适当的参数调用它,并且具有所需的权限就像你在你的示例代码做的事情。

其他提示

我从来没有尝试来创建使用批处理文件作为可执行的过程。我一直使用CMD.EXE作为程序。这已经在过去的工作对我来说:

Dim startInfo As New System.Diagnostics.ProcessStartInfo("cmd.exe", "/c " & serverpath & "\file.bat")

在“/ C”作为参数列表的一部分告诉cmd.exe的批处理文件完成后退出。

如果您要使用RedirectStandardOutput,你真的想用RedirectStandardError,然后还订阅Process类的事件,对这些流(OutputDataReceived和ErrorDataReceived)捕获数据。否则,你就没有办法来调试你的批处理脚本。

此读象权限问题。我想这种方式解决它,如果你不排除出来呢。结果 你有没有试过运行从本地计算机相同的批处理文件?点击 如果它是一个权限问题就可以解决在执行前,要么将文件复制本地或驱动器映射到其中的文件是远程计算机,然后从新的路径执行批处理文件。

此外,我们真的不知道什么是在可能会造成一个问题,该批处理文件。我要么发布批处理文件,或者如果您不能发布批处理文件使用批处理文件,你可以发布。例如一个批处理文件会写当前的日期时间到文件中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top