性能计数器权限:管理员不需要?

4
有人能为我澄清一下读取和写入性能计数器需要哪些权限吗?我看不出我需要任何特殊的权限来读写性能计数器,这与我找到的大多数资源相反。培训课程以及网络上的大多数资源都表明,管理性能计数器(创建、删除)需要管理员权限,而读取/写入需要管理员或本地“性能监视器用户”组的成员身份。我已经验证了第一个问题,但就读/写而言,在我的Win8.1机器上,作为非管理员用户,我似乎没有任何问题。我可以使用perfmon、PowerShell和.NET API读取perf计数器,并使用.NET API写入自定义perf计数器,这些都是非管理员身份。这是操作系统版本之间发生了变化吗?或者可能是因为我公司的域策略允许这样做?
1个回答

1
只有非交互式登录会话需要用户具有性能监视器用户或管理员组的成员身份才能读取性能计数器。
请注意,我不是微软员工,也没有找到任何提供此行为的权威声明的文档。我仅通过自己的测试确定了此行为。
具体而言,当使用LogonUserEx登录时,如果登录类型为LOGON32_LOGON_NETWORK、LOGON32_LOGON_NETWORK_CLEARTEXT、LOGON32_LOGON_BATCH或LOGON32_LOGON_SERVICE,则需要成为先前提到的组之一的成员才能读取性能计数器。但是,如果使用LOGON32_LOGON_INTERACTIVE或LogonUserEx文档中列出的任何其他杂项登录类型登录,则不需要成为先前提到的组之一的成员即可读取性能计数器。
此外,我确定Vista RTM对交互式登录会话执行了这个限制,而当前放松的交互式登录会话状态是在Vista SP1中引入的。虽然今天几乎没有用户使用Vista RTM,但如果您阅读可能当时编写的文档或其他建议(或更近期的建议可能是从旧建议盲目复制的),这是需要记住的好背景信息。

在 Windows 10 21H2 上使用虚拟服务帐户进行确认。将该帐户添加到“性能监视器用户”组中允许 Powershell 的 Get-Counter 命令正常工作。 - tangle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接