在 IIS7 中使用 IIS6 兼容模式读取 root\MicrosoftIISv2 所需的 WMI 权限

在 IIS7 中使用 IIS6 兼容模式读取 root\MicrosoftIISv2 所需的 WMI 权限

我需要使用 WMI IIS6 API 远程管理我的 IIS7(Windows Server 2008)。因此我添加了IIS6 WMI 兼容性IIS6 元数据库兼容性访问的角色根目录\MicrosoftIIsv2命名空间。

我有一个域帐户,它不是远程机器上的管理员;有了这个权限,一切都正常。

我为我的域帐户配置了这些权限,以便root\MicrosoftIIsv2远程访问 WMI 命名空间;请注意,这些权限在 IIS6 和 Windows Server 2003 上完美运行

分布式通信组件:

  • 帐户分布式 COM 用户> 远程和本地访问 DCOM

窗口管理信息:

  • 根目录\CIMV2(我也需要这里的访问权限)> 执行方法,启用帐户,远程启用
  • 根\默认(我也需要这里的访问权限)> 执行方法,启用帐户,远程启用
  • 根目录\MicrosoftIISv2> 执行方法,启用帐户,提供商写入,远程启用

IIS 元数据库(元数据库资源管理器):

  • LM > 完全控制 (维基百科继承这些权限)

我也尝试授予 C:\Windows\System32\inetsrv 一些访问权限;不知道是否需要。

我的问题是:

我无法列出 IIS 网站 (\root\MicrosoftIISv2:IIsWebServerSetting.Name="W3SVC/*")。我没有收到“拒绝访问”消息,但什么也没有返回。

  • 我的 API 和 powershell 测试可以连接并执行查询根\MicrosoftIISv2命名空间
  • 我可以阅读 IIsComputer 课程
    • 前任:Get-WmiObject IIsComputer -namespace "ROOT\MicrosoftIISv2" -authentication PacketPrivacy | SELECT *
  • 我无法读取 IIsWebServerSetting、IIsWebServer......来列出 WebSites:查询返回一个空集合
    • 前任:Get-WmiObject IIsWebServerSetting -namespace "ROOT\MicrosoftIISv2" -authentication PacketPrivacy | SELECT ServerComment
  • 如果帐户是管理员,所有查询都可以正常工作正如已经说过的
  • 我在用封包隐私验证

FI:我收到了警告事件 5605,无论是否具有管理员权限,这似乎都没有影响:

root\MicrosoftIISv2 命名空间标有 RequiresEncryption 标志。如果脚本或应用程序没有适当的身份验证级别,则可能会拒绝访问此命名空间。将身份验证级别更改为 Pkt_Privacy,然后再次运行脚本或应用程序


好的,我还有一些信息,当我使用IIS 6 元数据库资源管理器通过我的管理员帐户,我可以看到我的非管理员帐户的权限已正确继承。

但当我尝试使用非管理员账户连接时,我可以列出LM节点,但得到一个“访问被拒绝,无法获取密钥数据”当我尝试浏览子节点时。

我会进一步检查。


我尝试跟踪 WMI 活动,一切似乎正常;这倾向于证实问题出在 IIS 权限上。

答案1

解决。

必须像在 IIS 6 上一样设置 WMI 和 IIS Metabase 权限。所以它们对我来说是正确的。

具体细节在 IIS Metabase 上。首先,在 IIS 7 中,权限完全从根继承,而如果您想处理应用程序池,则W3SVC必须在 IIS 6 上设置权限。W3SVC/AppPools

由于存在“兼容性”,主要区别在于 IIS 7 元数据库文件系统。在 IIS 6 上,对 inetsrv 文件夹(这是 的默认设置Users)和元数据库 ACL 的读取权限就足够了。

在 IIS 7 上,必须在 IIS Metabase 和 IIS 7 配置文件夹上设置权限:(%SYSTEMROOT%/system32/inetsrv/config并且.配置文件)。默认情况下,只有Administrators(这就是它与管理员权限完美协作的原因)和一些其他保留组可以访问此文件夹。

另一点,如果您需要Stop在应用程序池上执行类似方法,则此功能需要配置文件夹的权限。

相关内容