2013-01-10 1 views
3

[ProgramFiles] \ [Application] 폴더에 파일을 쓰고 HKLM \ Software \ [Application] 경로에 레지스트리 키를 쓰는 '레거시'XP 응용 프로그램이 있습니다. Windows Vista 또는 Windows 7에서 응용 프로그램을 실행할 때 파일 및 레지스트리 항목은 Virtual Store 대신 기록됩니다. 괜찮아; 아직 아무것도 깨지 않습니다.가상화되지 않은 응용 프로그램에서 Windows Virtual Store의 파일 및 레지스트리 키에 액세스 할 수 있습니까?

이제 .NET에서 응용 프로그램을 다시 작성했습니다. "안전한"사용자 범위의 파일 만 읽고 쓰며 레지스트리 가상화를 사용하지 않으려면 requestedExecutionLevel과 함께 응용 프로그램 매니페스트를 사용합니다.

사용자가 최신 버전으로 업그레이드하면 이전에 가상화 된 파일 및 레지스트리 설정의 설정을 가져와 이전 응용 프로그램과의 호환성을 유지하려고합니다.

그래서 질문 : 매니페스트에 requestedExecutionLevel이 지정된 응용 프로그램에서 가상 저장소의 파일과 레지스트리 키에 액세스하는 방법이 있습니까?

+1

이전 버전을 읽고 새로운 버전으로 쓸 수 있도록 가상화 된 실행 응용 프로그램을 작성하는 것이 좋습니다. –

+0

답변을 얻었습니까? 나는 똑같은 문제를 다루고있다. 내 접근 방식은 마이그레이션 응용 프로그램을 만들려고했지만이 접근 방법이 다른 방식으로 바랄 것입니다. –

+0

답변을 얻지 못했습니다. 이 단계에서는 마이그레이션 레이어가 유일한 옵션처럼 들립니다. – BTownTKD

답변

1

나는이 질문을 충분히 길게 남겼습니다. 여기 내 결과가있다.

동일한 프로세스에서 가상 저장소와 '실제'레지스트리 및 파일 시스템에 액세스 할 수있는 방법이없는 것처럼 보입니다. 가상 저장소는 requestedExecutionLevel을 지정하지 않고 "관리자 권한으로"실행되지 않는 Windows 응용 프로그램에 자동으로 적용됩니다.

답변은 특수화 된 "마이그레이션"응용 프로그램 인 것으로 보입니다. 이 응용 프로그램 requestedExecutionLevel을 지정하지 않으므로 관리자 권한없이 응용 프로그램을 "가상 저장소"에 배치 할 수 있습니다. 관리 액세스 권한없이

  1. 시작 응용 프로그램 : 응용 프로그램은 2 단계로 작동합니다. 응용 프로그램은 가상 저장소에서 원하는 레지스트리 키와 파일 시스템 파일을 읽고 사용자의 AppData 디렉토리와 같은 임시 (비 가상화) 위치에 저장합니다.
  2. 을 다시 실행하여 관리자 권한으로 실행합니다. 응용 프로그램을 실제로 do this for itself, automatically, 프로세스를 간소화 할 수 있습니다. 이제 응용 프로그램은 "실제"레지스트리 및 파일 시스템에 액세스 할 수 있습니다. 응용 프로그램은 가상 저장소에서 백업 한 레지스트리 키와 파일을 저장하여 원하는 '실제'위치에 저장합니다.

이 응용 프로그램은 시작하는 동안 사용자 지정 레지스트리 키와 파일을 입력 인수로 받아들이는 것이 이상적입니다.