所以我创建了一个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。但是我仍然遇到这个错误。

有人有任何想法吗?

有帮助吗?

解决方案

使用IIS作为“正确的”用户帐户运行应该有效。

“每个人”群体并不意味着“绝对是每个人” - 这意味着“每个经过身份验证的用户”。如果您无法进行身份验证,那么您仍然不是每个人的一部分。如果您正在寻找需要网络权限的WMI资源,那么它仍然会失败。

除此之外,访问WMI需要用户权限,默认帐户IIS正在运行,因为没有。

其他提示

嗯,技术上,每个人和“认证用户”都是是不同的。

Everone包括“来宾”帐户和“来宾” group,null和匿名连接。每个人都是每个人。 “经过认证的用户”是谁提出了凭据。有点微妙,但很重要。

如果访客被禁用,那么我认为他们出于所有实际目的都是相同的,尽管每个人都可以包含“null”。和“匿名”会话。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top