2011-03-15 2 views
2

마침내 우리 소프트웨어의 문서를 프로그램의 자체 디렉토리에서 "내 문서"로 옮깁니다. 또한 가상화와 관련된 문제를 방지하기 위해 manifest에 "requestedPrivileges"라인을 추가했습니다.UAC 가상화를 비활성화 한 후 파일 복구

그러나 우리가 그랬다면 Vista/7에서 이전 버전을 실행 한 사람은 업데이트 후 숨겨진 VirtualStore 디렉토리의 어딘가에서 작업을 잃을 수 있습니다. 그렇다면 21 세기로 나아갈 수있는 가장 좋은 방법은 무엇입니까?

솔직히 저는 그림자 디렉토리에 프로그램 방식으로 접근하는 것을 찾을 수없는 것처럼 특히 파일을 복사하는 데 조심합니다.하지만 아마도 많은 사람들이 우리 앞에 똑같은 문제가 있었음에 틀림 없습니다.

답변

2

프로그램이 작동하려면 관리 권한이 합법적으로 필요하지 않으면 requestedPrivileges를 추가하지 마십시오. 사용자의 설명에 나와있는대로 아무 것도 제시하지 않았습니다. 그 이어야합니다. 또한 첫 번째 부팅시 파일이 여전히 프로그램 디렉토리에있는 것처럼 복사하게합니다. 왜냐하면 모든 가상화가 여전히 유효하기 때문입니다.

그러나 UAC를 사용하지 않고 마이그레이션을 반드시 수행해야하는 경우 파일을 %LOCALAPPDATA%\VirtualStore\path\to\file에서 찾을 수 있습니다. 예를 들어 파일이 인 경우 C : \ Program Files \ OurApp \에 저장하면 %LOCALAPPDATA%\VirtualStore\Program Files\OurApp\에 있습니다.

%LOCALAPPDATA% 경로를 얻으려면 SHGetSpecialFolderPathCSIDL_LOCAL_APPDATA과 함께 CSIDL 매개 변수로 사용할 수 있습니다.

+0

아니요, 추가 권한이 없으므로 asInvoked 수준을 사용하고 있습니다. 가상화에 대한 몇 가지 문제 (예 : 사용자가 Explorer를 통해 이전 데이터를 백업하는 경우)가 발생 했으므로 향후에이를 피하기를 원합니다. 이것이 우리가 결국 사물을 움직이는 이유입니다. 복사를 할 수있는 스텁 실행 파일도 트릭을해야한다고 생각합니다. – doynax

+0

@doynax : 더 많은 권한을 요구하면 UAC를 떠난 사용자 만 괴롭히며 이제는 프로그램을 시작할 때마다 프로그램 관리자 권한을 수락해야합니다. 이는 시스템에서 관리자 역할을 가진 사용자 일뿐입니다. 제한된 계정으로 정상적으로 실행되는 사용자는 매번 관리자 암호를 입력해야합니다. 기껏해야, 권한을 추가하는 것이 해결 방법이 아니라 해결 방법이 될 것입니다. 문제를 해결하려면 모든 것을 옮겨야하며 일단 그렇게하면 권한이 필요하지 않습니다. –

+0

MSDN에 따르면 추가 권한을 요청하지 않고 응용 프로그램이 Vista를 인식하고 (따라서 가상화를 종료하는) 신호를 보내려면 "asInvoked"수준을 요청하고 있습니다. – doynax

관련 문제