IIS 6 を実行している Windows 2003 サーバーがあり、Web サイトのセットアップと作成を自動化するスクリプトがいくつかあります。彼らは私がコミッショニングしている新しいサーバーでは動作していません (既に他の 3 つの W2K3 サーバーで問題なく動作しています)。問題は、IIS プロバイダーの WMI セキュリティにあるようです。以下の ASP コードは問題を表しています (ただし、問題の原因は元のコードではありません。これは問題を簡単に示したものです)。
Set wmiProvider = GetObject("winmgmts:\\.\root\MicrosoftIISv2")
If wmiProvider is Nothing Then
Response.Write "Failed to get WMI provider MicrosoftIISv2<br>"
End If
Response.Write "Querying for IISWebService...<br>"
Set colItems = wmiProvider.ExecQuery("Select * From IISWebServer",,0)
Response.Write "Error: " & Hex(Err.Number) & " (" & Err.Description & ")<br>"
これをブラウザで実行すると、ExecQuery 呼び出しの後にアクセス拒否エラーが報告されます。IUSR_ ユーザーの WMI アクセスをルート ブランチからずっと下に設定しました。実際、CIMV2 プロバイダーを使用して、IP アドレス情報を問題なく照会できます。IUSR ユーザーを machine admins グループに入れると、すべて機能しますが、実際にはそうしたくありません。
これは DCOM/WMI のセキュリティ上の問題に違いありませんが、他に何があるかはわかりません。誰でも光を当てることができますか?