setCurrentDirectory 函式 (winbase.h)

變更目前進程的目前目錄。

語法

BOOL SetCurrentDirectory(
  [in] LPCTSTR lpPathName
);

參數

[in] lpPathName

新目前目錄的路徑。 此參數可以指定相對路徑或完整路徑。 不論是哪一種情況,指定目錄的完整路徑都是計算並儲存為目前的目錄。

如需詳細資訊,請參閱 命名檔案、路徑和命名空間

根據預設,名稱限製為 MAX_PATH 個字元。

提示

從 Windows 10 版本 1607 開始,您可以選擇移除MAX_PATH限制。 如需詳細資訊,請參閱命名檔案、路徑和命名空間[路徑長度上限] 區段。

重要

設定目前目錄超過 MAX_PATH 會導致 CreateProcessW 失敗。

null 字元之前的最後一個字元必須是反斜杠 ('\') 。 如果您未指定反斜杠,則會為您新增它。 因此,除非您包含尾端反斜杠,否則請為路徑指定 >MAX_PATH-2 個字元;在此情況下,請為路徑指定 MAX_PATH-1 個字元。

傳回值

如果函式成功,則傳回值為非零。

如果函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

每個進程都有由兩個部分組成的單一目前目錄:

  • 磁碟指示項,其為驅動器號後面接著冒號,或伺服器名稱和共用名稱 (\\servername\sharename)
  • 磁碟指示項上的目錄

目前目錄是由進程的所有線程共用:如果一個線程變更目前的目錄,它會影響進程中的所有線程。

多線程應用程式和共用連結庫程式碼應該避免呼叫 SetCurrentDirectory 函式,因為影響其他線程所執行的相對路徑計算的風險。 相反

多線程應用程式和共用連結庫程式碼應該避免使用相對路徑,使其不會受到其他線程所執行之目前目錄的變更所影響。

注意

進程正在執行時,進程目前的目錄會鎖定。 這樣可防止刪除、移動或重新命名目錄。

在 Windows 8 和 Windows Server 2012 中,下列技術支援此函式。

技術 支援
伺服器消息塊 (SMB) 3.0 通訊協定 Yes
SMB 3.0 透明故障轉移 (TFO) Yes
具有向外延展檔案共用的SMB 3.0 (SO) Yes
叢集共用磁碟區文件系統 (CsvFS) Yes
彈性檔案系統 (ReFS)

範例

如需範例,請參閱 變更目前的目錄

規格需求

需求
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 winbase.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱