【问题标题】:Do remote EXE calls using WMI prevent that EXE from calling other applications?使用 WMI 进行远程 EXE 调用是否会阻止该 EXE 调用其他应用程序?
【发布时间】:2018-03-12 16:47:23
【问题描述】:

我的 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 Some text > myfile.txt

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

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

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

【问题讨论】:

    标签: wmi remote-access


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多