所以我创建了一个Web服务,它与WMI名称空间中包含的一组数据进行交互。当我在构建的开发Web服务器中使用ASP.net运行它时它工作正常,并按要求返回数据。但是当我将它发布到IIS 6服务器(win 2003)时,webservice不再允许我执行WMI方法调用。但它确实让我继续读它。
相反,它给了我:
System.Management.ManagementException: 访问被拒绝了 System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)at System.Management.ManagementObject.InvokeMethod(字符串 methodName,ManagementBaseObject inParameters,InvokeMethodOptions 选项)at System.Management.ManagementObject.InvokeMethod(字符串 methodName,Object [] args)
我试图通过将“Everyone”组添加到该WMI名称空间安全设置并为其提供完整的权限(我知道这是一个不好的做法,但我只想查看它是否可行)。包括执行)。然后重置IIS。但是我仍然遇到这个错误。
有人有任何想法吗?
答案 0 :(得分:3)
使用IIS作为“正确的”用户帐户运行应该有效。
“每个人”群体并不意味着“绝对是每个人” - 这意味着“每个经过身份验证的用户”。如果您无法进行身份验证,那么您仍然不是每个人的一部分。如果您正在寻找需要网络权限的WMI资源,那么它仍然会失败。
除此之外,访问WMI需要用户权限,默认帐户IIS正在运行,因为没有。
答案 1 :(得分:0)
嗯,从技术上讲,每个人和“认证用户”都是不同的。
Everone包含“来宾”帐户和“来宾”群组,null和匿名连接。每个人都是每个人。 “经过身份验证的用户”是提供凭据的任何人。有点微妙,但很重要。
如果客人被禁用,那么我相信他们的所有实际目的都是相同的,尽管每个人都可能包含“空”和“匿名”会话。