【问题标题】:Problem with remote install by WMI : the installation package is not accessible form the remote machineWMI 远程安装问题:无法从远程计算机访问安装包
【发布时间】: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 包复制到远程计算机,然后从本地解决文件路径以解决问题,但我仍然有兴趣获得更好的解决方案。

标签: c# .net wmi wmi-query


【解决方案1】:

如果我理解您的问题和后续评论,您会发现,当包路径位于与目标计算机不同的计算机上时(即 UNC 路径,通常可从目标计算机访问),它将不起作用。但是,当您将包复制到目标机器并传递目标机器上的本地路径时,安装工作正常。

我认为失败的原因是 DCOM 模拟级别的性质。
模拟允许您在目标计算机上使用调用者的凭据 -- 但 从目标机器连接到另一台机器。要使用相同的凭据进行第二个跃点,需要 Delegate 级别。 (问题是,这有安全风险,所以所有的指导都说“警告警告警告”,默认情况下一切都很难。)
当您要求目标机器访问单独网络位置上的安装包时,这是一个需要凭据的“第二跳”,但模拟意味着您只能在目标机器上使用您的凭据,而不是从那里传递到远程文件位置。

TechNet 对模拟级别进行了很好的总结,请参阅WMI Security Settings 顶部的表 6.6 DCOM 模拟级别

附言为了好玩,您可能会看看是否有办法在不复制到目标机器的情况下做到这一点。如果您能找到一种方法以允许匿名访问的方式将安装包文件公开给网络,我想知道是否允许第二跳,因为只需要匿名凭据?不过不确定。如果你和我一样,可能会有大量的猜测和测试:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 2017-06-03
    • 2014-05-21
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多