asp-classic - 从 ASP 访问 IIS WMI 提供程序的访问被拒绝错误

标签 asp-classic iis-6 wmi access-denied

我有一台运行 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 安全问题,但我不知道还有什么问题。任何人都可以发光吗?

最佳答案

在阅读了 G. Stoyev 的评论,询问是否在 Windows 日志中记录了任何事件后,我检查了我试图通过 WMI 远程访问 IIS 的服务器上的事件日志,瞧,我发现了一个带有以下文本的事件:

Access to the root\WebAdministration namespace was denied because the namespace is marked with RequiresEncryption but the script or application attempted to connect to this namespace with an authentication level below Pkt_Privacy. Change the authentication level to Pkt_Privacy and run the script or application again.



this answer中的代码到相关的 SO 问题 c# - "Access is denied" Exception with WMI .

这是我添加的一些示例 C# 代码,它们似乎为我解决了这个问题:
ConnectionOptions options = new ConnectionOptions();
options.Authentication = AuthenticationLevel.PacketPrivacy;
ManagementScope managementScope = new ManagementScope(@"\\remote-server\root\WebAdministration", options);
// ...

关于asp-classic - 从 ASP 访问 IIS WMI 提供程序的访问被拒绝错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2236252/

相关文章:

asp.net - 在asp.net中如何解决内存消耗超过限制?

asp.net - 无法使用 PreSendRequestHeaders() 覆盖 IIS 中的 http 缓存 header

delphi - 使用 WMI 获取附加信息

c# - 非英语系统上的 WMI 查询

c - 在 Windows 中获取另一个进程的命令行参数

asp-classic - 经典 ASP Do while 循环仅显示最后一条记录

asp-classic - CWBZZ5008 尝试连接到系统时发生安全错误

使用 StateServer 的 ASP.NET session 混合(可怕!)

javascript - 经典 Asp - JavaScript : Height and width is always zero in chrome

javascript - 在VBScript中调用JS函数