我很难确定增加性能计数器所需的权限。尝试在计数器上调用 .Increment 时,我只发生了一次 InvalidOperationException/Access Denied(我认为)。这导致我得到以下信息:
http://support.microsoft.com/kb/555129
将更新性能计数器的 ASP.NET 应用程序移动到生产环境中的最大问题是权限。默认情况下,为了增加性能计数器,用户需要具有管理员或高级用户权限。
从那里我将用户添加到高级用户组并继续我的方式没有问题。后来我发现“高级用户”不再具有 Vista 之外的任何权限,这让我回到了同一篇文章:
幸运的是,考虑到这些替代方案,事实证明更新性能计数器所需的权限集比以管理员或高级用户身份运行要小得多。在注册表项 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib 中,设置访问控制列表,以便必要的用户拥有完全控制权。在我们最初的示例中,ASPNET 用户将被授予完全控制权,但可以将访问权限授予需要更新性能计数器的任何人。
但即使这似乎也不是真的,因为我现在已经返回并从高级用户组中删除了我的测试用户,并且我的应用程序仍在毫无问题地递增计数器。
此外,似乎如果要设置权限,它将位于 HKLM\System\CurrentControlSet\services\ 下的个人计数器上。
我完全承认我的代码可能存在其他问题,导致我最初的权限问题。但是,我需要将其一直部署回 XP,因此确认以上内容是否只是过时的信息或完全不正确对我来说很重要。我很快就能自己确认这一点,但如果有人可以验证信息或向我指出具体的文档,那就太好了。