3

リモート コンピューターに 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();

Identityに設定theconnection.Impersonationすると、結果は「アクセスが拒否されました」になります。

4

1 に答える 1

3

あなたの質問とフォローアップのコメントを理解していれば、パッケージ パスがターゲット マシンとは異なるマシン (つまり、通常はターゲット マシンからアクセスできる UNC パス) にある場合は機能しないことがわかりました。ただし、パッケージをターゲット マシンにコピーし、ターゲット マシンのローカル パスを渡すと、インストールは機能します。

失敗の理由は、DCOM 偽装レベルの性質によるものだと思います。
偽装を使用すると、ターゲット マシンで呼び出し元の資格情報を使用できますが、ターゲット マシンから別のマシンに接続することはできません。同じ資格情報を使用してその 2 番目のホップを作成するには、デリゲートレベルが必要です。(問題は、それにはセキュリティ上のリスクがあるため、すべてのガイダンスに「警告警告警告」と記載されており、すべてがデフォルトで難しくなっています。)
別のネットワーク上の場所にあるインストール パッケージにアクセスするようターゲット マシンに要求した場合、これは資格情報を必要とする「2 番目のホップ」でしたが、なりすましは、ターゲット マシンでしか資格情報を使用できず、そこからリモートに渡されないことを意味しました。ファイルの場所。

TechNet には、偽装レベルの優れた要約があります。WMI セキュリティ設定の上部にある表 6.6 DCOM 偽装レベルを参照してください。

ps 楽しみのために、ターゲットマシンにコピーせずにそれを行う方法があるかどうかを確認するかもしれません. 匿名のアクセスを許可する方法でインストール パッケージ ファイルをネットワークに公開する方法を見つけることができた場合、匿名の資格情報のみが必要なため、その 2 番目のホップが許可されるのでしょうか? よくわかりません。そして、あなたが私のような人なら、非常に多くの推測とテストが行​​われているかもしれません:)

于 2011-05-28T18:05:29.070 に答える