2013-01-18 14 views
10

我很難確定增加性能計數器所需的權限。當我嘗試在計數器上調用.Increment時,我只發生了一次InvalidOperationException/Access Denied(我認爲)。這使我以下信息:增加性能計數器所需的權限

http://support.microsoft.com/kb/555129

周圍移動的ASP.NET 應用程序,更新性能計數器到生產 環境的過程中最大的問題就是權限。默認情況下,爲了遞增 性能計數器,用戶需要擁有管理員或電源 用戶權限。

從那裏我把用戶添加到高級用戶組,並繼續我的方式沒有問題。這是從一個不相關的問題,我後來發現,「超級用戶」不再有任何權限超出了Vista和,讓我回到同一條:

幸運的是,考慮到這些替代方案,事實證明,在 更新性能計數器所需的權限集比作爲管理員或超級用戶運行時要小得多 。在註冊表項 HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Perflib,設置 訪問控制列表,以便必要的用戶具有完全控制。在我們的原始示例 中,ASPNET用戶將被授予完全控制權, ,但可以授予任何需要更新性能 計數器的人的訪問權限。

但即使這樣,似乎並不如我現在回去,並移除了Power Users組我的測試用戶,我的應用程序仍然增加計數器沒有問題,是真實的。

此外,似乎如果有權限設置,它將在HKLM \ System \ CurrentControlSet \ services \下的單個計數器上。

我完全承認可能有一些其他問題導致我的原始權限問題。但是,我需要將這一切部署回XP,因此確認上述內容是簡單日期信息還是完全不正確是非常重要的。我很快就能確認這一點,但如果有人能夠驗證信息或指向我具體的文檔,那將是非常好的。

回答

0

有兩種類型的權限在這裏:

  1. 權限修改性能計數器類別

  2. 權限調用通過.NET代碼

對於修改的性能計數器第一個您只需要修改註冊表項HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Perflib(=要麼添加手動或添加使用r到Performance Log Users等等)以及普通用戶擁有的其他東西(例如,訪問HKLM \ SYSTEM \ CurrentControlSet \ Services),如KB中所述。

第二個涉及代碼訪問安全(CAS)策略。CAS策略是確定正在執行的代碼是否具有操作權限的機制(通常在資源上,例如文件系統或性能計數器),如果沒有,則拋出SecurityExeption。自從.NET 4以來,由於various原因(例如,在.NET代碼旁邊還有本機Win32 API),CAS策略爲obsolete

如果您想了解CAS的政策,這是一個很好的文章:Understanding .NET Code Access Security

當CAS被啓用,它可以創建一個有關在計算機上運行的代碼的政策,如果它可以設置增加或設置計數器的原始值,或者是否可以拋出安全異常(可在PerformanceCounterPermissionAccess中找到性能計數器的權限)。

基本上,如果你有.NET 4,你可以忽略CAS策略(已關閉),與以前的版本檢查使用mscorcfg.msc該程序的許可。

+0

與應用程序池標識本地系統網站哪個帳戶添加到性能日誌用戶? – BaltoStar