【发布时间】:2011-05-23 08:49:00
【问题描述】:
我想在远程计算机上安装 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 时,结果将是“拒绝访问”。
【问题讨论】:
-
现在我决定将 MSI 包复制到远程计算机,然后从本地解决文件路径以解决问题,但我仍然有兴趣获得更好的解决方案。