web-dev-qa-db-fra.com

Comment puis-je obtenir le chemin du dossier "Application Data" de l'utilisateur actuel?

1) Comment puis-je trouver le lecteur d'installation Windows dans lequel l'utilisateur travaille.? J'en ai besoin pour accéder à ApplicationData dans DocumentsandSettings.

2) Comment puis-je également obtenir le nom d'utilisateur pour que je puisse obtenir des données d'application.? Par exemple: "D:\Documents and Settings\user\Application Data".

36
SyncMaster

Regardez pour combiner Environment.GetFolderPath et Environment.SpecialFolder pour ce faire.

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
68
Martin Harris

Selon ce que vous faites, vous voudrez peut-être aussi regarder

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

Si l'utilisateur se trouve sur un domaine, il sera uniquement stocké dans son dossier AppData local et non synchronisé avec son profil itinérant.

17
Twelve47

Jetez un oeil à la Environment.SpecialFolders

Environment.SpecialFolder.ApplicationData;
Environment.SpecialFolder.System

cela devrait également vous permettre de contourner l'exigence du nom d'utilisateur.

4
Eoin Campbell

Jetez un œil à la classe System.Environment et à ses propriétés et méthodes, par exemple:

string systemDir = System.Environment.SystemDirectory;
string docs = System.Environment.GetFolderPath(
    System.Environment.SpecialFolder.MyDocuments));

string systemDrive = System.IO.Path.GetPathRoot(systemDir);

Le premier retourne "C:\Windows\system32" par exemple et le second "C:\Documents and Settings\USERNAME\My Documents".

3
M4N

Essaye ça:

string filePath = Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData);
2
Magnus Johansson

1) Comment puis-je trouver le lecteur d'installation Windows dans lequel l'utilisateur travaille.?

    var systemDrive =  Environment.ExpandEnvironmentVariables("%systemdrive%");

J'en ai besoin pour naviguer vers ApplicationData dans DocumentsandSettings.

Vous n'avez pas vraiment besoin de récupérer la valeur du lecteur système ou du nom d'utilisateur actuellement connecté pour y parvenir. Il existe des variables d'environnement prédéfinies %localAppData% et %appData% qui vous donne le chemin complet de ces répertoires comme indiqué dans le code ci-dessous:

var localApplicationData = Environment.ExpandEnvironmentVariables("%localappdata%"); 
//this gives C:\Users\<userName>\AppData\Local

var roamingApplicationData = Environment.ExpandEnvironmentVariables("%appdata%");
//this gives C:\Users\<userName>\AppData\Roaming

2) Comment puis-je également obtenir le nom d'utilisateur pour pouvoir accéder à ApplicaitionData.? Par exemple: "D:\Documents and Settings\user\Application Data".

Encore une fois, vous n'avez pas besoin d'un nom d'utilisateur pour obtenir le chemin des données d'application comme je l'ai expliqué ci-dessus. Pourtant, pour des raisons de connaissance, vous pouvez le récupérer à partir de %username% variable d'environnement comme indiqué ci-dessous:

    var currentUserName = Environment.ExpandEnvironmentVariables("%username%");
1
RBT