Java로 개발되어 launch4j로 패키지 된 도우미 응용 프로그램을 호출하는 프런트 엔드 애플리케이션 (PowerBuilder에서 중요하지만 중요하지 않음)이 있습니다.Java 생성 파일의 UAC 및 파일 가상화
응용 프로그램의 최종 사용자는 프론트 엔드 또는 백엔드에서 생성되는 일부 파일이있는 프런트 엔드에 대한 경로를 자유롭게 구성 할 수 있습니다.
나는 사용자가 (즉, 어떤 관리자 권한이 없음) C:\
출력을 구성한 경우 Windows Vista 또는 활성화 UAC와는 Windows7에, 생성 된 파일은 자동으로 c:\Users\user_name\AppData\Local\VirtualStore\
디렉토리에 가상화되는 것을 알 수 있습니다.
그러나 프로세스가 Java 응용 프로그램에서 FileOutputStream
을 통해 일부 파일을 만들면 해당 드라이브 루트에 액세스 할 수 없다는 사실에 일관성이있는 "액세스 거부"예외에서 Java가 실패합니다 하지만 다른 응용 프로그램이 가상화되어 있지는 않습니다. 작업 관리자는 가상화가 아닌 가상화를 확인합니다.
모든 응용 프로그램이 32 시스템의 32 비트이고 두 매니페스트가 모두 관련되어 있지 않으므로 that other SO question은 단서를 제공하지만 내 경우에는 응답자가 아닙니다.
자바가 PB 애플리케이션 (가상화 될 것입니다 - 고객 요청)처럼 동작하도록 할 수있는 방법이 있습니까? 물론 더 나은 솔루션은 경로가 액세스 가능한지 확인하고 그렇지 않은 경우 사용자에게 알리는 것입니다.
는 편집 : java.exe를 바이너리 보면서, 나는 그것이 국가가
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
은 어쩌면이의 답변입니다 (하지만 난 그 익숙하지 않은 오전)하는 매니페스트 포함 발견 질문 : 자바는 설계 상 가상화되지 않았습니까? 편집 : 매니페스트 메커니즘이 가상화를 사용할 수 없음을 이해했습니다.
에필로그 : 귀하의 설명에 감사 드리며 귀하의 주장은 고객 요청을 변경하는 데 도움이되었습니다. 이제 일부 폴더에 쓰기 권한이없는 것보다 Windows에서 파일을 가상화하는 것보다 낫습니다. o)
그게 결정되었습니다. 내부 매니페스트를 통해 가상화를 사용하지 않도록 설정하면 fornt와 back end 모두 일관된 동작을 보입니다. – Seki
우, 상식 승리 :) – Deanna