我有一个运行 IIS 6 的 Windows 2003 服务器,并且有一些脚本可以自动设置和创建网站。他们没有在我正在调试的新服务器上工作(他们已经在其他 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 调用后收到拒绝访问错误。我已经从 Root 分支一直为 IUSR_ 用户设置了 WMI 访问权限。其实我可以很开心地使用CIMV2提供者查询IP地址信息。如果我将 IUSR 用户放在机器管理员组中,一切正常,但我真的不想这样做。
这一定是 DCOM/WMI 安全问题,但我不知道还有什么问题。任何人都可以解释一下吗?