来自WebService的WMI调用

时间:2020-03-06 14:48:50  来源:igfitidea点击:

因此,我制作了一个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)

我试图通过将"每个人"组添加到该WMI命名空间安全设置并给予它们完全权限(包括执行)来解决此问题(是的,我知道这是一个不好的做法,但我只是想看看它是否可行)。 。然后重置IIS。但是我仍然收到此错误。

任何人有任何想法吗?

解决方案

使用IIS作为"适当的"用户帐户运行应该可以。

"每个人"组并不表示"绝对每个人",而是"每个经过身份验证的用户"。如果我们无法进行身份验证,那么我们仍然不是每个人的一部分。如果要使用需要网络权限的WMI资源,则该资源仍将失败。

除此之外,访问WMI可能需要用户权限,即默认帐户IIS正在运行,而默认帐户IIS正在运行。

从技术上讲,每个人和"授权用户"都不同。

Everone包括"来宾"帐户和"来宾"组,空连接和匿名连接。每个人都是每个人。 "授权用户"是指提供凭据的任何人。有点微妙,但很重要。

如果来宾被禁用,那么我相信它们在所有实际用途上都是相同的,尽管每个人都可以包括"空"和"匿名"会话。