문제

저는 해당 사용자에 대한 로그인 세부 정보를 입력하지 않고도 특정 사용자에 대한 로컬 응용 프로그램 데이터 폴더를 얻을 수 있는 좋은 방법을 찾고 있습니다.

SHGet폴더경로() 로컬 appdata 폴더를 얻으려는 사용자에 대해 액세스 토큰을 수락할 수 있지만 액세스 토큰을 얻으려면 사용자의 비밀번호를 제공해야 합니다.또한,에 따르면 문서 <= Windows 2000에서는 지원되지 않습니다.

레지스트리 키 HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell 폴더 현재 사용자의 로컬 appdata 폴더 위치를 포함하는 AppData 값이 포함되어 있습니다.따라서 특정 사용자를 위해 기술적으로 HKCU 하이브를 탑재하고 이 값에 액세스할 수 있습니다.그러나 Microsoft에서는 이 키의 사용을 강력히 권장하지 않는 것 같으며 때로는 이 키가 정확하지 않을 수도 있다고 들었습니다.

아이러니하게도 Windows에서는 관리자 계정이 Explorer를 열고 올바른 위치를 찾아보기만 하면 사용자의 appdata 폴더에 있는 모든 데이터에 쉽게 액세스하고 수정할 수 있습니다.그러나 특정 사용자의 appdata 폴더 위치를 프로그래밍 방식으로 얻는 쉬운 방법은 없는 것 같습니다.

그럼 다른 옵션이 있나요?지금은 레지스트리에 액세스하는 것이 최선의 선택인 것처럼 보이지만 가능하다면 Microsoft에서 권장하지 않는 공식적인 방법을 사용하고 싶습니다.

어떤 제안이라도 감사하겠습니다.

도움이 되었습니까?

해결책

AFAIK 토큰 없이 이를 수행할 수 있는 문서화된 방법은 없지만 가장 좋은 방법은 다음과 같습니다.

  1. 프로필 찾기:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList(Win9x의 %windir%\Profiles)
  2. 다음에 대한 TokenPrivilege 조정 SE_RESTORE_NAME
  3. RegLoadKey NTUSER.DAT(9x의 USER.DAT)
  4. ...\CurrentVersion\Explorer\User 셸 폴더 쿼리

확인할 올바른 레지스트리 키는 셸 폴더가 아닌 사용자 셸 폴더입니다(경로를 확장해야 할 수도 있음). Shell Folders 키에 관한 길고 슬픈 이야기 자세한 내용은

또한 가능하다면 프로그램 파일이나 공통 폴더에 데이터를 저장한 다음 각 사용자에 대해 프로그램이 처음 실행될 때 프로필에 복사해야 한다는 점을 지적하고 싶습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top