Domanda

Qualcuno sa quali privilegi utente sono necessari per il seguente codice deve essere eseguito correttamente come attività pianificata su Windows Server 2003:

System.Diagnostics.Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName)

Quando NON viene eseguito come attività pianificata, ad esempio sotto un utente connesso, purché l'utente sia membro di "Utenti Performance Monitor", questo codice non genererà un'eccezione.

Quando viene eseguito come attività pianificata con lo stesso account utente, non riesce.

L'unico modo per farlo funzionare è eseguirlo come membro del gruppo di amministratori locali.

Qualche idea?

È stato utile?

Soluzione

Le mie scuse più umili. L'utente che stavo usando NON era un membro di "Utenti Performance Monitor" gruppo.

Questo è necessario per l'implementazione di .NET Framework 1.1 di System.Diagnostics.

Ho aggiunto l'utente a questo gruppo e tutto va bene.

Altri suggerimenti

Quali assegnazioni di diritti utente hai assegnato all'account in esecuzione come attività pianificata? Dovrai fornire l'account in questione "Accedi come processo batch" nelle impostazioni di sicurezza locali.

Aggiornamento: la tua app scrive su qualsiasi file e in tal caso l'utente dell'attività pianificata ha diritti sufficienti?

Ho appena rovinato un'app di test che scrive i nomi dei processi dall'array Process [] restituito da Process.GetProcessesByName (Process.GetCurrentProcess (). ProcessName) in un file e funziona perfettamente come un'attività pianificata ... anche in esecuzione con l'identità di un utente che è solo un membro del gruppo Users (nemmeno un membro di "Performance Monitor Users".

Alla cartella in cui scrive vengono assegnati i diritti di modifica a SYSTEM, agli amministratori e all'utente dell'attività pianificata.

Qualche possibilità di incollare il tuo codice o almeno uno snippet abbastanza piccolo che dimostri che l'exe fallisce come attività pianificata in modo da poter aiutare a diagnosticare il problema?

Saluti
Kev

Un problema che ho riscontrato durante la lettura del nome del processo è che l'accesso ai contatori delle prestazioni può essere disabilitato.

Apri il registro e verifica se questa chiave è presente: [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Perfproc \ Performance] " Disabilita contatori delle prestazioni " = dword: 00000001

Puoi impostarlo su zero o cancellarlo.

Tratto da MSDN :

  

Autorizzazioni LinkDemand - per intero   fiducia per il chiamante immediato. Questo   membro non può essere utilizzato da parzialmente   codice attendibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top