2013-06-14 29 views
9

Vì vậy, tôi muốn biết liệu người dùng có chạy ứng dụng có đặc quyền quản trị viên hay không - không phân biệt hệ điều hành mà người đó đang sử dụng.Phát hiện xem người dùng có phải là quản trị viên

Tôi tìm thấy giải pháp cho Windows (từ trang 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; 
} 

gì về Mac và Ubuntu?

+4

Tôi sâu sắc đáng ngờ rằng giải pháp trên của bạn sẽ chạy cách đáng tin cậy trên các phiên bản khác nhau của Windows, đặc biệt là với nhập khẩu 'com.sun. *' verboten. Có lẽ bạn nên mô tả * tại sao * bạn cần phải phát hiện điều này - có lẽ có một giải pháp tốt hơn. –

+0

@TomG Tôi không phải là chuyên gia Java; chỉ là một người mới. Tại sao nó không hoạt động? –

+1

Trên Ubuntu, bạn có thể kiểm tra nếu lệnh 'whoami' trả về' root'. – Piovezan

Trả lời

7

Tôi không nghĩ là có thể hoàn toàn độc lập với hệ điều hành, nhưng một vài tháng trước tôi đã phải kiểm tra mã nguồn của IzPack và nó thực hiện chính xác những gì bạn cần.

Trong lớp PrivilegedRunner nó phải kiểm tra xem nó có đặc quyền quản trị, kiểm tra các phương pháp isElevationNeeded

Đây là source code

Các vấn đề liên quan