使用 WMI 的远程 EXE 调用是否会阻止该 EXE 调用其他应用程序?



我的 C# 应用程序中有以下代码,用于在远程客户端上运行 EXE 或任何其他命令。我尽量不依赖 psexec 或其他工具。

public static void ConnectToRemoteClient(string client_machine, string target_exe )
{
var connection = new ConnectionOptions();
object[] theProcessToRun = { target_exe };
var wmiScope = new ManagementScope($@"\{client_machine}rootcimv2", connection);
wmiScope.Connect();
using (var managementClass = new ManagementClass(wmiScope, new ManagementPath("Win32_Process"), new ObjectGetOptions()))
{
managementClass.InvokeMethod("Create", theProcessToRun );
}   
}

如何使用它的示例如下:

string exe = string.Format(@"cmd.exe /c C:tempMyfoldertest.bat");
ConnectToRemoteClient("ClientMachine", exe);

测试.bat只是回显到文件作为测试,以查看远程执行是否有效。

示例:回显 我的文件>一些文本.txt

它完美无缺。但是,当我使用代码启动调用同一批处理文件的 EXE 时,EXE 会启动,但 bat 文件永远不会运行。

如果我直接双击 EXE,它会启动批处理文件。

所以我的问题是这个。WMI 功能是否阻止从调用的原始 EXE 调用其他可执行文件或批处理?

好的。想通了问题。 我必须首先实际cd到目录并在那里运行它。如果我只是喂它完整的路径,它就找不到它。

string exe = string.Format(@"cmd.exe /c cd C:tempMyfolder" + @" &RunTestbat.exe");

最新更新