2013-04-12 21 views
9

Devo creare un'applicazione che deve creare file/cartelle in "C: \ Programmi", "Utenti [nome utente]" e Sys32. Anche l'applicazione deve effettuare alcune voci di registro.Come eseguire l'applicazione con i privilegi di amministratore utilizzando il file manifest in Visual Studio 2005?

Questa applicazione deve funzionare su Vista e versioni successive. Inoltre, su Windows Server 2003 e versioni successive.

I suddetti sistemi operativi hanno il concetto di controllo dell'account utente (UAC), in cui accedere ai file di programma e la scrittura nel registro richiede i privilegi di amministratore.

Ho esaminato molti forum e ho scoperto che utilizzando Microsoft SDK possiamo verificare se l'utente corrente ha o meno privilegi di amministratore. Ma la funzione "CheckTokenMembership" non riesce per Vista e versione superiore del sistema operativo.

Ho trovato anche una soluzione in cui è possibile utilizzare il file manifest per comunicare al sistema operativo in anticipo che l'applicazione corrente richiede i privilegi di amministratore. Questo viene fatto usando il tag "requestedExecutionLevel".

Sto utilizzando Visual Studio 2005 per creare l'applicazione. Quando creiamo un'applicazione in Visual Studio viene creato un file manifest predefinito. Posso modificare questo file manifest per includere il tag "requestedExecutionLevel", in modo che la mia applicazione venga sempre eseguita con privilegi di amministratore?

C'è qualche altro metodo attraverso il quale la mia applicazione viene eseguita con privilegi di amministratore senza chiedere all'utente (amministratore o standard) di eseguire la mia applicazione come "esegui come amministratore" ??

Grazie!

+2

Questo può aiutare a voi http://stackoverflow.com/questions/8139480/c-console-application-prompt-run-as-admin-to-run-as-administrator e questo http: //msdn.microsoft.com/en-us/library/bb756929.aspx –

+1

Non so quale sia la tua domanda/era. Ma devi elevare il tuo token per amministrare sotto UAC. Se hai avuto il tempo di leggere il Microsoft SDK e il codice di esempio, avresti un perfetto esempio di come farlo. – Dan

risposta

22

Si dovrebbe trovare un'opzione per questo nelle proprietà del progetto Linker -> File manifest -> Livello di esecuzione UAC. Impostare su requireAdminstrator.

In questo modo il manifest generato in modo predefinito includerà lo requestedExecutionlevel necessario per consentire agli utenti di aumentare automaticamente i propri privilegi se non sono già elevati.

screenshot of visual studio UAC options

Problemi correlati