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 | Sí |
Conmutación por error transparente (TFO) de SMB 3.0 | Sí |
SMB 3.0 con recursos compartidos de archivos de escalabilidad horizontal (SO) | Sí |
Sistema de archivos de Volumen compartido de clúster (CsvFS) | Sí |
Sistema de archivos resistente a errores (ReFS) | Sí |
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 |