簡単には解決できないかもしれない問題で立ち往生していますが、誰かが助けてくれることを願っています. 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 を避けようとしていますが、とにかくそれを使用して同じ問題に遭遇するかどうか正直に思っています。