none
Controllare se l'eseguibile è stato eseguito come amministratore RRS feed

  • Domanda

  • salve,

    avrei la necessità di far eseguire al programma un controllo per vedere se il programma è stato eseguito con privileggi di amministratore.

    come faccio?

    grazie,

    martedì 1 giugno 2010 10:24

Risposte

  • Ciao Gabriele,

    indipendentemente dal framework che stai utilizzando puoi usare questo codice:

    DirectCast(Thread.CurrentPrincipal, WindowsPrincipal).IsInRole(WindowsBuiltInRole.Administrator)

    se però ti riferisci alle caratteristiche introdotte con windows vista, devi cercare documentazione relativa l'UAC (User Account Control).

    Se ad esempio vuoi che il tuo programma obblighi l'utente ad essere avviare con privilegi di amministratore (lo scudo giallo e azzurro che compare sull'icona del prg per capirci) puoi, se hai VS 2010, attraverso le proprietà del progetto aprire il manifest dell'applicazione cliccando sul tasto "View Windows Settings" del tab "Application", o, se sei in VS 2008, aggiungendo un file manifest al tuo progetto e modificando la riga seguente

    <requestedExecutionLevel level="asInvoker" uiAccess="false" />

    in questo modo

    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

    spero di esserti stato di aiuto.

    un saluto

    Andy74

    martedì 1 giugno 2010 12:51

Tutte le risposte

  • Ciao Gabriele,

    indipendentemente dal framework che stai utilizzando puoi usare questo codice:

    DirectCast(Thread.CurrentPrincipal, WindowsPrincipal).IsInRole(WindowsBuiltInRole.Administrator)

    se però ti riferisci alle caratteristiche introdotte con windows vista, devi cercare documentazione relativa l'UAC (User Account Control).

    Se ad esempio vuoi che il tuo programma obblighi l'utente ad essere avviare con privilegi di amministratore (lo scudo giallo e azzurro che compare sull'icona del prg per capirci) puoi, se hai VS 2010, attraverso le proprietà del progetto aprire il manifest dell'applicazione cliccando sul tasto "View Windows Settings" del tab "Application", o, se sei in VS 2008, aggiungendo un file manifest al tuo progetto e modificando la riga seguente

    <requestedExecutionLevel level="asInvoker" uiAccess="false" />

    in questo modo

    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

    spero di esserti stato di aiuto.

    un saluto

    Andy74

    martedì 1 giugno 2010 12:51
  • il manifest dell'applicazione si può modificare anche con vb 2010 ... comunque grazie, ho risolto eseguendo l'if, con questo codice

    if DirectCast(Thread.CurrentPrincipal, WindowsPrincipal).IsInRole(WindowsBuiltInRole.Administrator) = true
    'eseguibile con privilegi di amministratore
    else
    'senza amministratore
    end if 

    martedì 1 giugno 2010 12:56