我需要使用 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
在应用程序池上执行类似方法,则此功能需要写配置文件夹的权限。