因此,我创建了一个 Web 服务,它与 WMI 命名空间中包含的一组数据进行交互。当我在内置开发 Web 服务器中使用 ASP.net 运行它时,它工作正常,并按请求返回数据。但是,当我将其发布到 IIS 6 服务器(win 2003)时,Web 服务不再允许我执行 WMI 方法调用。然而它确实让我仍然可以阅读它。
相反,它给了我:
System.Management.ManagementException: Access denied at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode) at System.Management.ManagementObject.InvokeMethod(String methodName, ManagementBaseObject inParameters, InvokeMethodOptions options) at System.Management.ManagementObject.InvokeMethod(String methodName, Object[] args)
我尝试通过将“Everyone”组添加到 WMI 命名空间安全设置并授予他们完全权限(是的,我知道这是一个不好的做法,但我只是想看看它是否有效)来解决此问题(是的,我知道这是一个不好的做法,但我只是想看看它是否有效)包括执行)。然后重置IIS。但是我仍然收到此错误。
有人有什么想法吗?
最佳答案
以“正确”用户帐户身份运行 IIS 应该可以。
“每个人”组并不意味着“绝对每个人”——它意味着“每个经过身份验证的用户”。如果您无法进行身份验证,您仍然不是所有人的一部分。如果您要获取需要网络权限的 WMI 资源,那么它仍然会失败。
除此之外,访问 WMI 可能需要用户权限,而运行的默认帐户 IIS 则没有该权限。
关于web-services - 来自 WebService 的 WMI 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/142453/