您可以使用WMI 服务在远程计算机上启动您的进程。您可以将您的 exe 构建到远程计算机可见的共享目录中,然后在远程计算机上使用 WMI 来启动该 exe。
有很多例子可以做到这一点,但为了说明,假设没有验证复杂性的简单方法是使用 .VBS 脚本文件:
strComputer = "acomputer"
strCommandLine = "calc.exe"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objProcess = objWMIService.Get("Win32_Process")
intReturnValue = objProcess.Create(strCommandLine, , , intPID)
WScript.Echo "Process ID: " & intPID
您还可以使用SysInternals 的 PsExec来处理完成这项工作的所有细节。
在 Visual Studio 中构建 exe 后,您可以在本地计算机上运行它以确保它执行您想要的操作,然后当您准备在远程系统上启动它时,您可以执行类似于上述 VBS 的批处理脚本来启动远程系统上的 exe。
您仍然需要提供一些机制来划分工作量,以便每个客户端都知道它应该处理的问题的哪一部分。您可以在用于启动远程应用程序的命令行中、在带有 exe 的目录中的配置文件中、在数据库表中提供此信息,或者使用客户端连接回的单独的命令和控制类型服务器(尽管通过这种方法,您很快就会进入学习使用现有解决方案而不是自己动手的阶段)。
您可能还想包含某种远程“终止开关”。您可以使用来自 SysInternals 的 PsKill,或者如果您想要更优雅的关闭,例如在与 exe 相同的目录中存在特定文件这样简单的操作可以作为远程进程自行关闭的标志。
您还可以考虑向客户端添加CSScript支持,以便远程客户端程序是静态的,并加载和编译一个 CSScript 文件来完成这项工作。如果您在频繁重新部署和重新启动客户端程序时遇到某种困难,或者如果您需要它们都略有不同(例如,您可能编写一个程序为每个客户端生成单独的脚本文件),这可能会很有用。