2012-05-17 4 views
2

Java 프로그램을 가지고 있는데,이 프로그램은 관리자 권한으로 프로그램이 실행되는 경우에 따라 다르게 실행하려는 Windows에서 실행됩니다. 일반 사용자로 실행됩니다.Java 프로그램이 런타임에 관리자로 실행 중인지 확인하는 방법

Java의 다양한 버전 (oracle/sun 버전 만 해당)에서 작동 할 수있는 일반적인 솔루션이 필요합니다.

+1

이 게시물을 참조하며 대답 : http://stackoverflow.com/questions/1834490/simple-check-in-java-to-find-out-if-running-as-administrator 나는했습니다 –

+0

잠시 동안이 문제를 조사해 보았고 몇 가지 다른 접근법을 생각합니다. 나는 정상적인 콘솔에서 'reg query "HKU \ S-1-5-19"를 실행하려고 시도 할 수 있고 관리자 권한으로 실행될 때 값을 반환하는 오류가 발생하는 것으로 나타났습니다. 다른 사람이 액세스 수준을 감지하는 명확한 방법이 없으면이 접근 방식을 사용할 수 있습니다. –

+0

@NiekTax 링크에 감사드립니다. 그것은 내가 질문을 게시하기 전에 보았던 배경 링크 중 하나입니다. HKLM에 글을 쓸 수 있다면 도메인이나 로컬 관리자가 할 수 있어야합니다. 나는 이전의 코멘트에서 regkey를 사용하여 작업하는 솔루션을 가지고있다. 나중에 더 우아한 해결책이 나오지 않으면 잠시 후에 게시하겠습니다. –

답변

3

나는 현재 프로그램이 admin 액세스인지 여부를 결정하기 위해 reg 쿼리 접근법을 사용했다. 다음은 귀하의 필요에 맞게 수정할 수있는 충분한 정보를 제공해야합니다.

try { 
     String command = "reg query \"HKU\\S-1-5-19\""; 
     Process p = Runtime.getRuntime().exec(command); 
     p.waitFor();       // Wait for for command to finish 
     int exitValue = p.exitValue();   // If exit value 0, then admin user. 

     if (0 == exitValue) { 
      System.out.println("admin user"); 
     } else { 
      System.out.println("non admin user"); 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
+0

이 해결책은'Domain Admins' 그룹 'S-1-5-21domain-512' 그룹의 구성원에게는 실패합니다. – buzz3791