Итак, происходит следующее: я запускаю программу со своего компьютера (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.");
}
К сожалению, я в недоумении – можно ли использовать Win32_Process .Создайте метод для запуска exe-файла UNC или можно ли скопировать exe-файл или даже папку, в которой он находится, на хост-устройство, когда Admin$ и C$ отключены? Я пытаюсь избежать psexec, и мне, честно говоря, интересно, столкнусь ли я с той же проблемой, используя его.
Изменить: из-за ограничений, находящихся вне моего контроля, я не разрешено размещать на виртуальной машине собственную службу Windows или Http и взаимодействовать через службу.
Подробнее здесь: https://stackoverflow.com/questions/220 ... ote-device
Мобильная версия