WMI从WebService调用
-
02-07-2019 - |
题
所以我创建了一个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”。和“匿名”会话。