擷取資料夾的 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
類型: 手柄
代表特定使用者的 存取權杖 。 如果此參數為 Null (這是最常見的用法),則函式會要求目前使用者的已知資料夾。
傳遞特定使用者的 hToken 來要求該使用者的資料夾。 這通常是在具有足夠許可權來擷取指定使用者權杖的服務內容中完成。 該代幣必須以 TOKEN_QUERY 和 TOKEN_IMPERSONATE 權限打開。 在某些情況下,您還需要包含 TOKEN_DUPLICATE。 除了傳遞使用者的 hToken 之外,還必須掛接該特定使用者的登錄 Hive。 請參閱 存取控制 以進一步討論存取控制問題。
指派 hToken 參數值 -1 表示預設使用者。 這可讓 SHGetKnownFolderPath 的用戶端尋找預設使用者的資料夾位置 (,例如 桌面 資料夾) 。 建立任何新使用者帳戶時,會複製預設使用者使用者設定檔,並包含特殊資料夾,例如 「文件」 和 「桌面」。 新增至「預設使用者」資料夾的任何項目也會顯示在任何新的使用者帳戶中。 請注意,存取預設使用者資料夾需要管理員權限。
[out] ppszPath
類型: PWSTR*
當這個方法傳回時,會包含指向 Null 結尾 Unicode 字串的指標位址,以指定已知資料夾的路徑。 呼叫程式負責在呼叫 CoTaskMemFree 之後釋放此資源,無論 SHGetKnownFolderPath 是否成功。 傳回的路徑不包含尾端反斜線。 例如,會傳回 “C:\Users” ,而不是 “C:\Users\”。
返回值
類型:HRESULT
如果成功,則傳回S_OK值,否則傳回錯誤值,包括下列專案:
| 回傳碼 | Description |
|---|---|
|
除此之外,此值可以指出 rfid 參數參考沒有路徑的 KNOWNFOLDERID (例如標示為 KF_CATEGORY_VIRTUAL 的資料夾)。 |
|
除此之外,此值可以指出 rfid 參數參照系統上不存在的 KNOWNFOLDERID 。 並非所有 KNOWNFOLDERID 值都存在於所有系統上。 使用 IKnownFolderManager::GetFolderIds 擷取目前系統的 KNOWNFOLDERID 值集。 |
備註
此函式會取代 SHGetFolderPath。 該舊函式現在只是 SHGetKnownFolderPath 的包裝函式。
需求
| Requirement | 價值觀 |
|---|---|
| 最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
| 支援的最低伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
| 目標平臺 | 窗戶 |
| Header | shlobj_core.h(包括 Shlobj.h) |
| Library | OneCore.Lib |
| DLL | Shell32.dll(6.0.6000 版或更新版本) |