Проблема с удаленной установкой через WMI: установочный пакет недоступен с удаленной машины - PullRequest
3 голосов
/ 23 мая 2011

Я хочу установить пакет MSI на удаленный компьютер.Локальный и удаленный компьютер являются членами домена с именем «adn.lan», и пользователь / пароль, который я передаю в качестве параметра для подключения, имеет полный доступ к удаленному компьютеру.Когда я устанавливаю connection.Authority на "ntdlmdomain: adran.lan" , возвращаемый параметр показывает « Недопустимый параметр », и когда я оставляю его как nullи сделать так, как отмечено, connect() будет успешно подключен, но при попытке установить пакет возвращаемый параметр показывает, что указанный пакет недоступен .

Вот код, который я пытался использовать.

ConnectionOptions connection = new ConnectionOptions();
//connection.Authority = "ntdlmdomain:adn.lan"; // "kerberos:" + domain + @"\" + machine;
connection.Username = username;
connection.Password = password;
//connection.Impersonation = ImpersonationLevel.Identify ;
connection.Authentication = AuthenticationLevel.Packet;

ManagementScope scope = new ManagementScope("\\\\RemoteMachineName\\root\\CIMV2", connection);
scope.Connect();

ManagementPath p = new ManagementPath("Win32_Product");                
ManagementClass classInstance = new ManagementClass(scope, p, null);
ManagementBaseObject inParams = classInstance.GetMethodParameters("Install");

inParams["AllUsers"] = true; 
inParams["Options"] = string.Empty;
inParams["PackageLocation"] = "\\\\LocalMachineName\\Share\\Prescription.msi";                

ManagementBaseObject outParams = classInstance.InvokeMethod("Install", inParams, null);                

string retVal = outParams["ReturnValue"].ToString();

Когда я установлю theconnection.Impersonation в Identity, результатом будет «Доступ запрещен».

1 Ответ

3 голосов
/ 28 мая 2011

Если я понимаю ваш вопрос и последующий комментарий, вы обнаружите, что он не будет работать, если путь к пакету был на другом компьютере, а не на целевом компьютере (то есть путь UNC, обычно доступный с целевой машины). Но установка работает, когда вы копируете пакет на целевой компьютер и передаете локальный путь на целевой компьютер.

Я полагаю, что причиной сбоя является природа уровней олицетворения DCOM.
Олицетворение позволяет использовать учетные данные вызывающего абонента на целевой машине, но не для подключения с целевой машины к другой машине . Для выполнения второго прыжка с использованием тех же учетных данных требуется уровень Delegate . (Проблема в том, что это связано с угрозами безопасности, поэтому все руководство гласит «предупреждение-предупреждение-предупреждение», и все усложняет по умолчанию.)
Когда вы запросили у целевого компьютера доступ к установочному пакету в отдельном сетевом расположении, это был «второй прыжок», который потребовал бы учетные данные, но имитация означала, что вы можете использовать свои учетные данные только на целевом компьютере, а не передавать оттуда на удаленный компьютер. расположение файла.

TechNet имеет хорошую сводку уровней олицетворения, см. Таблица 6.6 Уровни олицетворения DCOM в верхней части Настройки безопасности WMI .

p.s. Ради интереса вы можете посмотреть, есть ли способ сделать это без копирования на целевой компьютер. Если бы вы могли найти способ выставить файл установочного пакета в сеть таким образом, чтобы разрешить анонимный доступ, я хотел бы знать, будет ли разрешен этот второй прыжок, поскольку необходимы только анонимные учетные данные? Не уверен, хотя. И может быть очень много гаданий и проверок, если вы чем-то похожи на меня:)

...