SHGetKnownFolderPath 함수(shlobj_core.h)

폴더의 KNOWNFOLDERID로 식별된 알려진 폴더의 전체 경로를 검색합니다.

구문

HRESULT SHGetKnownFolderPath(
  [in]           REFKNOWNFOLDERID rfid,
  [in]           DWORD            dwFlags,
  [in, optional] HANDLE           hToken,
  [out]          PWSTR            *ppszPath
);

매개 변수

[in] rfid

형식: REFKNOWNFOLDERID

폴더를 식별하는 KNOWNFOLDERID 에 대한 참조입니다.

[in] dwFlags

형식:DWORD

특수 검색 옵션을 지정하는 플래그입니다. 이 값은 0일 수 있습니다. 그렇지 않으면 하나 이상의 KNOWN_FOLDER_FLAG 값입니다.

[in, optional] hToken

형식: HANDLE

특정 사용자를 나타내는 액세스 토큰 입니다. 이 매개 변수가 가장 일반적인 사용법인 NULL인 경우 함수는 현재 사용자에 대해 알려진 폴더를 요청합니다.

해당 사용자의 hToken 을 전달하여 특정 사용자의 폴더를 요청합니다. 이 작업은 일반적으로 지정된 사용자의 토큰을 검색할 수 있는 충분한 권한이 있는 서비스의 컨텍스트에서 수행됩니다. 해당 토큰은 TOKEN_QUERYTOKEN_IMPERSONATE 권한으로 열어야 합니다. 경우에 따라 TOKEN_DUPLICATE 포함해야 합니다. 사용자의 hToken을 전달하는 것 외에도 해당 특정 사용자의 레지스트리 하이브를 탑재해야 합니다. 액세스 제어 문제에 대한 자세한 내용은 Access Control 참조하세요.

hToken 매개 변수에 -1 값을 할당하면 기본 사용자가 표시됩니다. 이렇게 하면 SHGetKnownFolderPath 의 클라이언트가 기본 사용자에 대한 폴더 위치(예: 데스크톱 폴더)를 찾을 수 있습니다. 기본 사용자 사용자 프로필은 새 사용자 계정을 만들 때 중복되며 문서데스크톱과 같은 특수 폴더를 포함합니다. 기본 사용자 폴더에 추가된 모든 항목도 새 사용자 계정에 표시됩니다. 기본 사용자 폴더에 액세스하려면 관리자 권한이 필요합니다.

[out] ppszPath

형식: PWSTR*

이 메서드가 반환될 때 알려진 폴더의 경로를 지정하는 null로 끝나는 유니코드 문자열에 대한 포인터의 주소를 포함합니다. 호출 프로세스는 SHGetKnownFolderPath의 성공 여부와 관계없이 CoTaskMemFree를 호출하여 더 이상 필요하지 않은 경우 이 리소스를 해제할 책임이 있습니다. 반환된 경로에는 후행 백슬래시가 포함되지 않습니다. 예를 들어 "C:\Users"는 "C:\Users\" 대신 반환됩니다.

반환 값

형식: HRESULT

성공하면 S_OK 반환하고, 그렇지 않으면 다음을 포함하여 오류 값을 반환합니다.

반환 코드 설명
E_FAIL
무엇보다도 이 값은 rfid 매개 변수가 경로가 없는 KNOWNFOLDERID (예: KF_CATEGORY_VIRTUAL 표시된 폴더)를 참조함을 나타낼 수 있습니다.
E_INVALIDARG
무엇보다도 이 값은 rfid 매개 변수가 시스템에 없는 KNOWNFOLDERID 를 참조함을 나타낼 수 있습니다. 모든 KNOWNFOLDERID 값이 모든 시스템에 있는 것은 아닙니다. IKnownFolderManager::GetFolderIds를 사용하여 현재 시스템에 대한 KNOWNFOLDERID 값 집합을 검색합니다.

설명

이 함수는 SHGetFolderPath를 대체합니다. 이전 함수는 이제 SHGetKnownFolderPath에 대한 래퍼일 뿐입니다.

요구 사항

   
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 shlobj_core.h(Shlobj.h 포함)
DLL Shell32.dll(버전 6.0.6000 이상)

추가 정보

IKnownFolder::GetPath

알려진 폴더 샘플

SHGetKnownFolderIDList

SHSetKnownFolderPath