使用WMI进行远程EXE调用是否阻止EXE调用其他应用程序?

时间:2018-03-12 16:47:23

标签: wmi remote-access

我在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}\root\cimv2", 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:\temp\Myfolder\test.bat");
 ConnectToRemoteClient("ClientMachine", exe);

test.bat只是回调一个文件作为测试,看看远程执行是否有效。

示例:echo一些文字> myfile.txt的

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

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

所以我的问题是这个。 WMI功能是否阻止从名为?

的原始EXE调用其他可执行文件或批处理

1 个答案:

答案 0 :(得分:0)

确定。找出问题所在。 我必须首先cd到目录并在那里运行它。如果我把它全部送到完整的路径,就找不到它。

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