我正在使用下面的代码在 cmd 中执行我的命令。这实际上是为在我的服务器上运行一个 exe 而制作的。
Private Sub Command1_Click()
Dim FN As Integer
FN = FreeFile
'DOS COMMANDS
ServerName = "\\mydbserv"
ExePath = """d:\myfolder\my.exe"""
UserName = "myserver\myuser"
Password = "mypass"
MyCommand = "psexec " & ServerName & " -u " & UserName & " -p " & Password & " -i " & ExePath
'Open Bat file
Open "C:\Mybatc.bat" For Output As #FN
Print #FN, "cd c:\Users\myuser"
Print #FN, MyCommand
Print #FN, "Exit"
Close #FN
'Activate
result = Shell("C:\Mybatc.bat", vbHide)
End
End Sub
一切都很好,直到我看到进程完成后 cmd 没有关闭。 更糟糕的是我试图远程运行的 exe 也没有停止。当我检查 cpu 使用情况时,它总是显示“00”甚至没有启动。它显示为永远工作但实际上从未工作过。 所以我的问题是:
- 为什么我不能远程运行这个 exe 文件? (或者为什么它只是显示像运行一样)
- 在服务器上完成此 exe 文件后,如何远程运行和关闭?
- 如何在我的电脑上完成后关闭窗口和进程?
最佳答案
这个怎么样?
- 在服务器上安装 Windbg。
- 配置 windbg 自动附加到您的 exe,当您的 exe 准备好运行时。 http://ask.brothersoft.com/image-file-execution-options-debugger-83827.html
- 运行你的脚本
- 在您的 exe 启动后,windbg 将附加到它。
- 在windbg命令中输入'g',让你的exe运行。
- 等到你认为它应该完成
- ctrl-break 让进程挂起
- 在 windbg 命令中输入 '~*kb',查看每个线程中发生了什么, 找出他们为什么要等,他们在等什么?
关于vb6 - 如何使用vb6通过客户端在服务器上远程运行exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13515652/