在远程设备上运行远程exe

时间:2014-02-26 18:25:46

标签: c# wmi remote-execution

我遇到了一个可能不容易解决的问题,但我希望有人能够提供帮助。我正在尝试运行exe来在远程设备上安装某些软件(SCCM客户端)。

所以发生的事情是我从我的PC(Host1)运行程序以连接到远程设备(Host2)并指示该设备从服务器运行exe。

我一直在使用标准的远程执行WMI代码而没有运气:

ConnectionOptions connOptions = new ConnectionOptions();
connOptions.Impersonation = ImpersonationLevel.Impersonate;
connOptions.EnablePrivileges = true;
ManagementScope manScope = new ManagementScope(String.Format(@"\\{0}\ROOT\CIMV2", Host2), connOptions);
manScope.Connect();
if(manScope.IsConnected)
{
    ObjectGetOptions objectGetOptions = new ObjectGetOptions();
    ManagementPath managementPath = new ManagementPath("Win32_Process");
    ManagementClass processClass = new ManagementClass(manScope, managementPath, objectGetOptions);

    ManagementBaseObject inParams = processClass.GetMethodParameters("Create");
    inParams["CommandLine"] = @sCommand;
    ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null);
}
else
{
    MessageBox.Show("An error occurerd while attempting to connect to WMI.");
}

我遇到的问题是当exe在服务器上时执行sCommand。因此,当参数是“\\ server \ share \ program.exe”时,没有任何反应。当参数是“c:\ Folder \ program.exe”时,它的效果很好。不幸的是,我们定位的这些设备已禁用Admin $和C $,并且没有硬盘上的exe。

遗憾的是我很遗憾 - 是否可以使用Win32_Process.Create方法来运行UNC exe,或者可以在Admin $和C时将exe或甚至文件夹复制到主机设备$被禁用了?我正在努力避免使用psexec,而且我真的想知道我是否会在使用它时遇到同样的问题。

1 个答案:

答案 0 :(得分:0)

您无法在远程计算机上部署自定义Windows服务应用程序吗?这样,您只需使用您想要的任何通道与服务进行通信,并从那里运行可执行文件。