2014-02-26 60 views
0

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

所以发生了什么事情是我从我的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."); 
} 

我遇到正在执行sCommand当EXE是一个服务器上的问题。所以当参数是“\\ server \ share \ program.exe”时,什么都不会发生。当参数是“c:\ Folder \ program.exe”时效果很好。不幸的是,这些设备的Admin $和C $被禁用,并且没有exe文件在他们的硬盘上。

不幸的是 - 是否有可能使用Win32_Process.Create方法运行UNC exe文件,或者是否有可能在执行Admin $时将该exe文件甚至是它所在的文件夹复制到主机设备中C $被禁用?我试图避免psexec,而且我老老实实地想知道,如果我反正会遇到同样的问题。

+0

在您的UNC路径开始处缺少“\”是否存在问题的拼写错误? –

+0

我相信,如果$ admin被禁用,那么psexec将无法正常工作,因为它使用它将自身复制到目标机器上... – LB2

+0

是的,这是上面的错字 - 代码没有通过这种方式。 –

回答

0

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

+0

这可能比我们试图完成的复杂一点。这意味着对某些遗留系统的更快速修复,但很快就会变得比我们希望的更麻烦。但是我明白你的意思,这听起来很有趣。我可能会进一步调查。 –