在远程设备上运行远程exe

问题描述 投票:0回答:1

我遇到了一个可能不容易解决的问题,但我希望有人能够提供帮助。 我正在尝试运行 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,而且我真的想知道使用它是否会遇到同样的问题。

编辑:由于我无法控制的限制,我不允许在虚拟机上托管自定义窗口或 Http 服务并通过该服务进行交互。

c# wmi remote-execution
1个回答
0
投票
您无法在远程计算机上部署自定义 Windows 服务应用程序吗?这样,您只需使用您想要的任何通道与服务进行通信,并从那里运行可执行文件。

© www.soinside.com 2019 - 2024. All rights reserved.