Поделиться через


Функция 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 Да
Прозрачная отработка отказа (TFO) SMB 3.0 Да
SMB 3.0 с масштабируемыми общими папками (SO) Да
Файловая система общего тома кластера (CSVFS) Да
Восстанавливаемая файловая система (ReFS) Да

Примеры

Пример см. в разделе Изменение текущего каталога.

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также