Fonction SetCurrentDirectory (winbase.h)
Modifie le répertoire actif pour le processus en cours.
Syntaxe
BOOL SetCurrentDirectory(
[in] LPCTSTR lpPathName
);
Paramètres
[in] lpPathName
Chemin d’accès au nouveau répertoire actif. Ce paramètre peut spécifier un chemin relatif ou un chemin d’accès complet. Dans les deux cas, le chemin d’accès complet du répertoire spécifié est calculé et stocké en tant que répertoire actif.
Pour plus d’informations, consultez Nommer des fichiers, des chemins et des espaces de noms.
Par défaut, le nom est limité à MAX_PATH caractères.
Conseil
À compter de Windows 10 version 1607, vous pouvez choisir de supprimer la limitation MAX_PATH. Pour plus d’informations, consultez la section Limitation de la longueur maximale des chemins d’accès de Naming files, paths et namespaces.
Important
La définition d’un répertoire actif plus long que MAX_PATH entraîne l’échec de CreateProcessW .
Le dernier caractère avant le caractère null doit être une barre oblique inverse ('\'). Si vous ne spécifiez pas la barre oblique inverse, elle sera ajoutée pour vous. Par conséquent, spécifiez >MAX_PATH-2 caractères pour le chemin, sauf si vous incluez la barre oblique inverse de fin ; dans ce cas, spécifiez MAX_PATH-1 caractères pour le chemin.
Valeur retournée
Si la fonction réussit, la valeur de retour est différente de zéro.
Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Remarques
Chaque processus a un répertoire actif unique composé de deux parties :
- Un désignateur de disque qui est soit une lettre de lecteur suivie d’un signe deux-points, soit un nom de serveur et un nom de partage (\\nom_serveur\nom_partage)
- Répertoire sur l’indicateur de disque
Le répertoire actif est partagé par tous les threads du processus : si un thread change le répertoire actif, cela affecte tous les threads du processus.
Les applications multithread et le code de bibliothèque partagée doivent éviter d’appeler la fonction SetCurrentDirectory en raison du risque d’affecter les calculs de chemin relatifs effectués par d’autres threads. Inversement
Les applications multithread et le code de bibliothèque partagée doivent éviter d’utiliser des chemins relatifs afin qu’ils ne soient pas affectés par les modifications apportées au répertoire actif effectuées par d’autres threads.
Notes
Le répertoire actif d’un processus est verrouillé pendant l’exécution du processus. Cela empêche la suppression, le déplacement ou le renommage du répertoire.
Dans Windows 8 et Windows Server 2012, cette fonction est prise en charge par les technologies suivantes.
Technologie | Prise en charge |
---|---|
Protocole Server Message Block (SMB) 3.0 | Oui |
Basculement transparent SMB 3.0 (TFO) | Oui |
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) | Oui |
Système de fichiers du volume partagé de cluster (CsvFS) | Oui |
Système de fichiers résilient (ReFS) | Oui |
Exemples
Pour obtenir un exemple, consultez Modification du répertoire actif.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau | applications UWP] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau | applications UWP] |
Plateforme cible | Windows |
En-tête | winbase.h (inclure Windows.h) |
Bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |