2013-01-18 15 views
10

Ho difficoltà a determinare le autorizzazioni necessarie per incrementare un contatore delle prestazioni. Ho avuto solo un problema di InvalidOperationException/Accesso negato (credo) quando provo a chiamare. Incremento su un contatore. Questo mi ha portato alle seguenti informazioni:Autorizzazioni richieste per incrementare i contatori delle prestazioni

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

Il problema più grande che circonda il processo di spostamento di un un'applicazione ASP.NET che aggiorna i contatori di prestazioni in un ambiente di produzione è permesso. Per impostazione predefinita, al fine di incrementare un contatore delle prestazioni , l'utente deve disporre dei diritti utente Amministratore o Power .

Da lì ho aggiunto l'utente al gruppo di utenti esperti e ho proseguito il mio cammino senza problemi. Era da un problema non correlato che poi ho scoperto che "Power User" non ha più alcuna autorizzazione al di là di Vista e che mi lascia indietro a quel medesimo articolo:

Fortunatamente, dato queste alternative, si scopre che il il set di autorizzazioni richiesto per aggiornare i contatori delle prestazioni è molto più piccolo di rispetto all'esecuzione come amministratore o Power User. Nella chiave di registro HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Perflib, impostare l'Elenco di controllo di accesso in modo che l'utente necessario disponga del controllo completo. Nel nostro esempio originale, , all'utente ASPNET sarebbe concesso il controllo completo, ma l'accesso può essere concesso a chiunque debba aggiornare un contatore delle prestazioni.

Ma anche questo non sembra essere vero poiché ora sono tornato indietro e ho rimosso il mio utente di test dal gruppo di utenti esperti e la mia applicazione sta ancora incrementando i contatori senza problemi.

Più, sembra che se ci fossero permessi da impostare, sarebbe sul contatore individuale sotto HKLM \ System \ CurrentControlSet \ services \.

Ammetto pienamente che potrebbe essersi verificato un altro problema con il mio codice che ha causato il mio problema con le autorizzazioni originali. Tuttavia, ho bisogno di distribuire questo tutto il ritorno a XP, quindi è importante per me per confermare se quanto sopra è semplicemente datato informazioni o è del tutto errato. Sarò in grado di confermarlo a breve, ma sarebbe bello se qualcuno potesse convalidare le informazioni o indicarmi una documentazione concreta.

risposta

0

Ci sono due tipi di autorizzazioni qui:

  1. permesso di modificare le prestazioni categoria contatore

  2. permesso di chiamare modificare il contatore delle prestazioni tramite il codice .NET

Per la per prima cosa sono necessarie le autorizzazioni per modificare la chiave di registro HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Perflib (= aggiungere manualmente o aggiungere l'uso r per gli utenti del registro delle prestazioni ecc.) e poche altre cose che l'utente normale ha (ad es. accedere a HKLM \ SYSTEM \ CurrentControlSet \ Services) come indicato nel KB.

Il secondo è correlato al criterio di protezione dall'accesso di codice (CAS).Il criterio CAS era/è un meccanismo per determinare se il codice di esecuzione ha il permesso per un'operazione (spesso sulla risorsa, ad esempio il filesystem oi contatori delle prestazioni) e, in caso contrario, è stato lanciato SecurityExeption. La politica CAS è obsolete da .NET 4 a causa dei motivi various (ad esempio, esiste anche l'API Win32 nativa accanto al codice .NET).

Se si vuole capire il criterio CAS, questo è un bel articolo: Understanding .NET Code Access Security

Quando CAS è stata attivata, è stato possibile creare un criterio di un codice in esecuzione sul computer e impostare se può incrementare o impostare il valore grezzo del contatore o se può generare un'eccezione di sicurezza (le possibili autorizzazioni del contatore delle prestazioni si trovano in PerformanceCounterPermissionAccess).

Fondamentalmente se si dispone di .NET 4, è possibile ignorare i criteri CAS (è stato disattivato), con le versioni precedenti controllare il permesso del programma utilizzando mscorcfg.msc.

+0

per sito con identità del pool di applicazioni LocalSystem quale account aggiungere agli utenti del registro delle prestazioni? – BaltoStar

Problemi correlati