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

Voir aussi