共用方式為


SHGetFolderLocation 函式 (shlobj_core.h)

已取代。 擷取資料夾的路徑做為 ITEMIDLIST 結構。

語法

SHSTDAPI SHGetFolderLocation(
  [in]  HWND             hwnd,
  [in]  int              csidl,
  [in]  HANDLE           hToken,
  [in]  DWORD            dwFlags,
  [out] PIDLIST_ABSOLUTE *ppidl
);

參數

[in] hwnd

類型: HWND

保留的。

[in] csidl

類型: int

CSIDL 值,識別要找到的資料夾。 與 CSID 相關聯的資料夾可能不存在於特定系統上。

[in] hToken

類型: HANDLE

可用來代表特定使用者的 存取令牌 。 它通常會設定為 NULL,但當這些資料夾有多個使用者被視為屬於單一使用者時,就可能需要它。 此類型最常使用的資料夾是 [我的檔]。 當 hToken 為非 NULL 時,呼叫應用程式會負責正確的模擬。 它必須具有特定用戶的適當安全性許可權,而且目前必須掛接使用者的登錄區。 如需訪問控制問題的進一步討論,請參閱 存取控制

指派 hToken 參數值 -1 表示預設使用者。 這可讓 SHGetFolderLocation 的用戶端尋找資料夾位置, (例如預設使用者的 Desktop 資料夾) 。 建立任何新的使用者帳戶時,預設使用者配置檔會重複,並包含 [我的檔和桌面] 等特殊資料夾。 任何新增至 [預設使用者] 資料夾的專案也會出現在任何新的使用者帳戶中。

[in] dwFlags

類型: DWORD

[out] ppidl

類型: PIDLIST_ABSOLUTE*

專案標識子清單結構的指標位址,指定資料夾相對於命名空間根目錄的位置, (桌面) 。 在失敗時 ,ppidl 參數會設定為 NULL 。 呼叫應用程式負責呼叫 ILFree 來釋放此資源。

傳回值

類型: HRESULT

如果成功,則傳回S_OK,否則傳回錯誤值,包括下列專案:

傳回碼 Description
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
nFolder 中的 CSIDL 有效,但資料夾不存在。
E_INVALIDARG
nFolder 中的 CSIDL 無效。

備註

注意 從 Windows Vista 起,此函式只是 SHGetKnownFolderIDList 的包裝函式。 CSIDL 值會轉譯成其相關聯的 KNOWNFOLDERID, 並呼叫 SHGetKnownFolderIDList 。 新的應用程式應該使用已知的資料夾系統,而不是舊版 CSIDL 系統,這僅支援回溯相容性。
 
SHGetFolderLocationSHGetFolderPathSHGetSpecialFolderLocationSHGetSpecialFolderPath 函式是取得早於 Windows Vista 之系統上資料夾句柄的慣用方式。 直接使用環境變數名稱的 ExpandEnvironmentStrings 等函式,格式為 %VariableName%, 可能不可靠。

此函式是 SHGetSpecialFolderLocation的超集,隨附於舊版殼層。

規格需求

需求
最低支援的用戶端 Windows 2000 Professional、Windows XP [僅限桌面應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 shlobj_core.h (包含 Shlobj.h)
程式庫 Shell32.lib
Dll Shell32.dll (5.0 版或更新版本)

另請參閱

IKnownFolder::GetIDList