windows - 性能计数器权限 : admin not required?

标签 windows performancecounter perfmon

有人可以为我澄清读取和写入性能计数器所需的确切权限吗?我没有看到我需要任何类型的特殊权限来读/写性能计数器,这与我找到的大多数资源相反。

我参加的培训以及网络上的大多数资源表明,管理性能计数器(创建、删除)需要管理员权限,而读/写需要管理员或本地 Performance Monitor Users 组的成员身份。我已经验证了第一个,但至于读/写,我作为非管理员用户在我的 Win8.1 机器上执行此操作似乎没有任何问题。我可以使用 perfmon、PowerShell 和 .NET API 读取性能计数器,并使用 .NET API 写入自定义性能计数器,所有这些都是非管理员。

这是否跨操作系统版本发生了变化?或者我的公司域策略中的某些内容允许这样做?

最佳答案

只有非交互式登录 session 需要用户拥有 Performance Monitor Users 或 Administrator 组的成员身份才能读取性能计数器。

请注意,我不是 Microsoft 员工,并且我没有找到任何提供此行为权威声明的文档。我只是通过我自己的测试确定了这种行为。

具体来说,当使用 LogonUserEx 登录时,如果登录类型是 LOGON32_LOGON_NETWORK、LOGON32_LOGON_NETWORK_CLEARTEXT、LOGON32_LOGON_BATCH 或 LOGON32_LOGON_SERVICE,则需要上述组之一的成员身份才能读取性能计数器。但是,如果使用 LOGON32_LOGON_INTERACTIVE 或 LogonUserEx 文档中列出的任何其他杂项登录类型登录,则无需成为上述组之一的成员即可读取性能计数器。

此外,我确定 Vista RTM 确实对交互式登录 session 实现了此限制,并且在 Vista SP1 中引入了交互式登录 session 的当前放松状态。虽然今天几乎没有用户运行 Vista RTM,但如果您阅读了当时可能已经写好的文档或其他建议(或者可能是从旧建议中盲目复制的更新建议),请记住这一点。

关于windows - 性能计数器权限 : admin not required?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30196970/

相关文章:

windows - Delphi 程序和 Windows 64 位兼容性问题

azure - 在 Window Azure 上获取性能计数器相关错误

c# - 如何读取另一台机器上 MSMQ 的计数?

iis - 如何解决错误 "It has taken too long to refresh the W3SVC counters, the stale counters are being used instead"

c++ - 从 C++ 公开的 Windows 性能计数器总是在 perfmon.exe 中产生 "Can' t 负载计数器

.net - 在 PerfMon 实例中选择正确的 AppPool

windows - Windows 是否强制执行文件级删除权限?

windows - 在 Windows 10 64 位中注册 DLL 而不将其移动到 System32

c# - PerformanceCounterCategory.GetCategories 与 Perfmon 不一致

windows - 内核模式和用户模式应用程序之间的通信