2013-06-14 19 views
9

Quindi, voglio sapere se un utente ha eseguito l'applicazione con i privilegi di amministratore - indipendentemente dal sistema operativo in cui si trova la persona.Rileva se l'utente è admin

ho trovato la soluzione per Windows (da un sito web):

public static boolean isAdmin() { 
    String groups[] = (new com.sun.security.auth.module.NTSystem()).getGroupIDs(); 
    for (String group : groups) { 
     if (group.equals("S-1-5-32-544")) 
      return true; 
    } 
    return false; 
} 

Che dire di Mac e Ubuntu?

+4

Sono profondamente sospetto che la soluzione sopra verrà eseguito in modo affidabile su diverse versioni di Windows, specialmente con il comando 'com.sun. *' import. Forse dovresti descrivere * perché * devi rilevarlo - probabilmente c'è una soluzione migliore. –

+0

@ TomG Non sono un esperto Java; solo un novizio. Perché non funzionerà ?? –

+1

Su Ubuntu probabilmente puoi controllare se il comando 'whoami' restituisce' root'. – Piovezan

risposta

7

Non penso sia possibile essere totalmente indipendenti dal SO, ma qualche mese fa ho dovuto controllare il codice sorgente di IzPack e fa esattamente quello che ti serve.

Nella classe PrivilegedRunner deve verificare se ha privilegi di amministratore, controllare il metodo isElevationNeeded

Ecco la source code

Problemi correlati