我遇到了一个难以解决的问题,但我希望有人能够提供帮助。我试图运行一个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,而且我老老实实地想知道,如果我反正会遇到同样的问题。
在您的UNC路径开始处缺少“\”是否存在问题的拼写错误? –
我相信,如果$ admin被禁用,那么psexec将无法正常工作,因为它使用它将自身复制到目标机器上... – LB2
是的,这是上面的错字 - 代码没有通过这种方式。 –