2013-06-14 29 views
9

Bir kullanıcının uygulamayı, yönetici ayrıcalıklarıyla çalıştırıp çalıştırmadığını öğrenmek istiyorum - kişinin bulunduğu işletim sisteminden bağımsız olarak.Kullanıcının yönetici olup olmadığını algıla

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; 
} 

Ne Mac ve Ubuntu hakkında:

I (bir web sitesinden) Windows için çözüm bulundu?

+4

olduğunu Özellikle verboten 'com.sun. *' import ile. Belki de şunu açıklamalısınız * neden * bunu tespit etmeniz gerekiyor - muhtemelen daha iyi bir çözüm var. –

+0

@TomG Java uzmanı değilim; sadece bir acemi. Neden çalışmıyor? –

+1

Ubuntu'da muhtemelen 'whoami' komutunun 'root'u döndürüp döndürmediğini kontrol edebilirsiniz. – Piovezan

cevap

7

Tamamen işletim sisteminden bağımsız olmanın mümkün olduğunu sanmıyorum, ancak birkaç ay önce IzPack kaynak kodunu kontrol etmek zorunda kaldım ve tam olarak ihtiyacınız olanı yapıyor. o yönetici ayrıcalıklarına sahip olup olmadığını yöntemi Burada isElevationNeeded

kontrol denetlemek zorundadır PrivilegedRunner sınıfında

, senin yukarıdaki çözüm Windows'un farklı sürümlerinde güvenilir çalışacağı derinden şüpheli source code

İlgili konular