2013-01-18 24 views
10

Mam trudności z określeniem uprawnień potrzebnych do zwiększenia licznika wydajności. Wystąpił tylko jeden przypadek InvalidOperationException/Access Denied (chyba) podczas próby wywołania .Increment na liczniku. To prowadzi mnie do następującej informacji:Uprawnienia wymagane do zwiększania liczników wydajności

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

Największym problemem otaczający proces przenoszenie aplikacji ASP.NET, który aktualizuje liczników wydajności w środowisku produkcyjnym ma uprawnienia. Domyślnie, aby zwiększyć licznik wydajności , użytkownik musi mieć uprawnienia administratora lub uprawnienia w zakresie uprawnień użytkownika .

Stamtąd dodałem użytkownika do grupy zaawansowanych użytkowników i kontynuowałem po drodze bez problemu. To było od niezwiązanego kwestii, że później odkrył, że „Użytkownik Power” nie ma już żadnych uprawnień poza Vista i niech mnie z powrotem do tego samego artykułu:

Na szczęście, biorąc pod uwagę te alternatywy, to okazuje się, że zestaw uprawnień wymagany do aktualizacji liczników wydajności jest znacznie mniejszy niż niż uruchamianie jako administrator lub użytkownik zaawansowany. W kluczu rejestru HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Perflib ustaw listę kontroli dostępu , aby wymagany użytkownik miał pełną kontrolę. W naszym oryginalnym przykładzie, użytkownik ASPNET uzyskałby pełną kontrolę, , ale dostęp można uzyskać dla każdego, kto musi zaktualizować licznik wydajności o wartości: .

Ale nawet to nie wydaje się być prawdziwe, jak ja teraz wrócił i zdjąłem użytkownika testowego z grupy Użytkownicy zaawansowani i mój wniosek jest wciąż zwiększający liczniki bez problemu.

W dalszej kolejności wydaje się, że jeśli byłyby ustawione uprawnienia, byłby on w indywidualnym liczniku w HKLM \ System \ CurrentControlSet \ services \.

Przyznaję, że mógł istnieć inny problem z moim kodem, który spowodował mój pierwotny problem z pozwoleniami. Jednak muszę wdrożyć to z powrotem do XP, więc ważne jest dla mnie, aby potwierdzić, czy powyższe informacje są po prostu datowane lub są całkowicie niepoprawne. Wkrótce będę mógł to potwierdzić, ale byłoby miło, gdyby ktoś mógł zweryfikować informacje lub wskazać mi konkretną dokumentację.

Odpowiedz

0

Istnieją dwa rodzaje uprawnień tutaj:

  1. uprawnień do modyfikowania Występ Kategoria Counter

  2. Permission zadzwonić modyfikacji licznika wydajności za pośrednictwem kodu .NET

W imieniu najpierw potrzebujesz uprawnień do modyfikowania klucza rejestru HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Perflib (= albo dodaj ręcznie albo dodaj użytek r do Dzienników wydajności itd.) i kilka innych rzeczy, które normalny użytkownik ma (np. dostęp do HKLM \ SYSTEM \ CurrentControlSet \ Services), jak podano w KB.

Drugi dotyczy zasad Code Access Security (CAS).Zasada CAS była/jest mechanizmem określającym, czy kod wykonujący ma pozwolenie na operację (często na zasobie, np. Systemie plików lub licznikach wydajności), a jeśli nie, to SecurityExeption został zgłoszony. Zasady CAS to obsolete od czasu .NET 4 z powodu przyczyn various (np. Istnieje również natywny interfejs API Win32 obok kodu .NET).

Jeśli chcesz zrozumieć politykę CAS, jest to ładny artykuł: Understanding .NET Code Access Security

Kiedy CAS została włączona, możliwe było stworzenie polityki na temat kodu, który jest uruchomiony na komputerze i ustawione jeśli to możliwe inkrementować lub ustawić wartość nieprzetworzoną licznika lub jeśli można wyrzucić wyjątek bezpieczeństwa (możliwe uprawnienia licznika wydajności znajdują się w PerformanceCounterPermissionAccess).

Zasadniczo, jeśli masz .NET 4, możesz zignorować zasady CAS (zostało wyłączone), z poprzednimi wersjami sprawdź uprawnienia programu za pomocą mscorcfg.msc.

+0

dla witryny z tożsamością puli aplikacji System lokalny jakie konto dodać do Dzienników wydajności? – BaltoStar