加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 07:43:15 所属栏目:asp.Net 来源:网络整理
导读:我有一台运行IIS 6的 Windows 2003服务器,并且有一些自动设置和创建网站的脚本.他们没有在我调试的新服务器上工作(他们已经在其他3台W2K3服务器上工作愉快).问题似乎归结为IIS提供程序上的WMI安全性.下面的ASP代码表示问题(虽然它不是导致问题的原始代码 –
我有一台运行IIS 6的 Windows 2003服务器,并且有一些自动设置和创建网站的脚本.他们没有在我调试的新服务器上工作(他们已经在其他3台W2K3服务器上工作愉快).问题似乎归结为IIS提供程序上的WMI安全性.下面的ASP代码表示问题(虽然它不是导致问题的原始代码 – 这是问题的简化演示).

Set wmiProvider = GetObject("winmgmts:.rootMicrosoftIISv2")
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. Stoynev的评论询问是否在Windows日志中记录了任何事件后,我检查了我试图通过WMI远程访问IIS的服务器上的事件日志,并且看到我发现了一个带有以下文本的事件:

Access to the rootWebAdministration 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-serverrootWebAdministration",options);
// ...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读