SHSetFolderPathA 函式 (shlobj_core.h)
荒廢的。 將新路徑指派給其 CSIDL 所識別的系統資料夾。
語法
HRESULT SHSetFolderPathA(
[in] int csidl,
[in] HANDLE hToken,
[in] DWORD dwFlags,
[in] LPCSTR pszPath
);
參數
[in] csidl
類型:int
CSIDL 值,可識別要設定其路徑的資料夾。 只有實體資料夾有效。 如果指定了虛擬資料夾,則此函式會失敗。
將 CSIDL_FLAG_DONT_UNEXPAND 值新增至 CSIDL,以確保字串會完全如提供一樣寫入登錄。 如果未包含 CSIDL_FLAG_DONT_UNEXPAND 旗標,路徑的部分可能會由環境字串取代,例如 %USERPROFILE%。
[in] hToken
類型:HANDLE
存取令牌,可用來代表特定使用者。 此參數通常會設定為 NULL,在此情況下,函式會嘗試存取目前使用者的資料夾實例。 不過,您可能需要為可以有多個使用者但被視為屬於單一用戶的資料夾,將值指派給 hToken。 此類型最常用的資料夾是 Documents。
當 hToken 為非 Null 時,呼叫應用程式會負責正確的模擬。 它必須具有特定用戶的適當安全性許可權,包括TOKEN_QUERY和TOKEN_IMPERSONATE,且用戶登錄區目前必須掛接。 如需訪問控制問題的進一步討論,請參閱 訪問控制。
[in] dwFlags
類型:DWORD
保留。 必須設定為 0。
[in] pszPath
類型:LPCTSTR
長度為 null 的字串指標,MAX_PATH包含資料夾的新路徑。 這個值不能 NULL,而且字串長度不能為零。
傳回值
類型:HRESULT
傳回標準 HRESULT 碼,包括:
傳回碼 | 描述 |
---|---|
|
資料夾的路徑已成功更新。 |
|
有數個錯誤狀況導致這個值傳回,包括下列各項:
|
言論
建議路徑以 Unicode 字串表示,因為資料夾名稱可能包含 ANSI 中無法表達的 Unicode 字元。
注意
shlobj_core.h 標頭會將SHSetFolderPath定義為別名,根據UNICODE預處理器常數的定義,自動選取此函式的ANSI或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
支援的最低伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | shlobj_core.h (包括 Shlobj.h, Shlobj_core.h) |
連結庫 | Shell32.lib |
DLL | Shell32.dll 版 (5.0 版或更新版本) |