Función SetCurrentDirectory (winbase.h)

Cambia el directorio actual del proceso actual.

Sintaxis

BOOL SetCurrentDirectory(
  [in] LPCTSTR lpPathName
);

Parámetros

[in] lpPathName

Ruta de acceso al nuevo directorio actual. Este parámetro puede especificar una ruta de acceso relativa o una ruta de acceso completa. En cualquier caso, la ruta de acceso completa del directorio especificado se calcula y se almacena como directorio actual.

Para obtener más información, consulte Nombres de archivos, rutas de acceso y espacios de nombres.

De forma predeterminada, el nombre se limita a MAX_PATH caracteres.

Sugerencia

A partir de Windows 10, versión 1607, puede optar por quitar la limitación de MAX_PATH. Para más información, consulte la sección Limitación de longitud máxima de ruta de acceso de Nombres de archivos, rutas de acceso y espacios de nombres.

Importante

Al establecer un directorio actual más de MAX_PATH se produce un error en CreateProcessW .

El carácter final antes del carácter null debe ser una barra diagonal inversa ('\'). Si no especifica la barra diagonal inversa, se agregará para usted. Por lo tanto, especifique >MAX_PATH-2 caracteres para la ruta de acceso a menos que incluya la barra diagonal inversa final; en cuyo caso, especifique MAX_PATH-1 caracteres para la ruta de acceso.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es distinto de cero.

Si se produce un error en la función, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Cada proceso tiene un único directorio actual formado por dos partes:

  • Un designador de disco que es una letra de unidad seguida de dos puntos, o un nombre de servidor y un nombre de recurso compartido (\\servername\sharename)
  • Un directorio en el designador de disco

Todos los subprocesos del proceso comparten el directorio actual: si un subproceso cambia el directorio actual, afecta a todos los subprocesos del proceso.

Las aplicaciones multiproceso y el código de biblioteca compartida deben evitar llamar a la función SetCurrentDirectory debido al riesgo de afectar a los cálculos de ruta de acceso relativos que realizan otros subprocesos. Inversa

Las aplicaciones multiproceso y el código de biblioteca compartida deben evitar el uso de rutas de acceso relativas para que no se vean afectados por los cambios en el directorio actual realizado por otros subprocesos.

Nota

El directorio actual de un proceso está bloqueado mientras se ejecuta el proceso. Esto impide que se elimine, mueva o cambie el nombre del directorio.

En Windows 8 y Windows Server 2012, esta función es compatible con las tecnologías siguientes.

Tecnología Compatible
Protocolo Bloque de mensajes del servidor (SMB) 3.0
Conmutación por error transparente (TFO) de SMB 3.0
SMB 3.0 con recursos compartidos de archivos de escalabilidad horizontal (SO)
Sistema de archivos de Volumen compartido de clúster (CsvFS)
Sistema de archivos resistente a errores (ReFS)

Ejemplos

Para obtener un ejemplo, consulte Cambio del directorio actual.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado winbase.h (incluya Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también