Java 프로그램을 가지고 있는데,이 프로그램은 관리자 권한으로 프로그램이 실행되는 경우에 따라 다르게 실행하려는 Windows에서 실행됩니다. 일반 사용자로 실행됩니다.Java 프로그램이 런타임에 관리자로 실행 중인지 확인하는 방법
Java의 다양한 버전 (oracle/sun 버전 만 해당)에서 작동 할 수있는 일반적인 솔루션이 필요합니다.
Java 프로그램을 가지고 있는데,이 프로그램은 관리자 권한으로 프로그램이 실행되는 경우에 따라 다르게 실행하려는 Windows에서 실행됩니다. 일반 사용자로 실행됩니다.Java 프로그램이 런타임에 관리자로 실행 중인지 확인하는 방법
Java의 다양한 버전 (oracle/sun 버전 만 해당)에서 작동 할 수있는 일반적인 솔루션이 필요합니다.
나는 현재 프로그램이 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();
}
이 해결책은'Domain Admins' 그룹 'S-1-5-21domain-512' 그룹의 구성원에게는 실패합니다. – buzz3791
이 게시물을 참조하며 대답 : http://stackoverflow.com/questions/1834490/simple-check-in-java-to-find-out-if-running-as-administrator 나는했습니다 –
잠시 동안이 문제를 조사해 보았고 몇 가지 다른 접근법을 생각합니다. 나는 정상적인 콘솔에서 'reg query "HKU \ S-1-5-19"를 실행하려고 시도 할 수 있고 관리자 권한으로 실행될 때 값을 반환하는 오류가 발생하는 것으로 나타났습니다. 다른 사람이 액세스 수준을 감지하는 명확한 방법이 없으면이 접근 방식을 사용할 수 있습니다. –
@NiekTax 링크에 감사드립니다. 그것은 내가 질문을 게시하기 전에 보았던 배경 링크 중 하나입니다. HKLM에 글을 쓸 수 있다면 도메인이나 로컬 관리자가 할 수 있어야합니다. 나는 이전의 코멘트에서 regkey를 사용하여 작업하는 솔루션을 가지고있다. 나중에 더 우아한 해결책이 나오지 않으면 잠시 후에 게시하겠습니다. –