web-dev-qa-db-ja.com

現在のユーザーの「アプリケーションデータ」フォルダーのパスを取得するにはどうすればよいですか?

1)ユーザーが作業しているWindowsインストールドライブを見つけるにはどうすればよいですか? DocumentsandSettingsのApplicationDataに移動するには、これが必要です。

2)また、どのようにしてユーザー名を取得して、ApplicaitionDataに移動できるようにしますか?例:「D:\ Documents and Settings\user\Application Data」。

36
SyncMaster

これを行うには、 Environment.GetFolderPathEnvironment.SpecialFolder を組み合わせて見てください。

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

あなたがしていることに応じて、あなたも見たいかもしれません

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

ユーザーがドメイン上にある場合、ローカルのAppDataフォルダーにのみ保存され、ローミングプロファイルとは同期されません。

17
Twelve47

Environment.SpecialFolders

Environment.SpecialFolder.ApplicationData;
Environment.SpecialFolder.System

これにより、ユーザー名の要件も満たされます。

4
Eoin Campbell

System.Environmentクラスとそのプロパティおよびメソッドを確認してください。例:

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

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

たとえば、最初の例では "C:\ Windows\system32"が返され、2つ目の例では "C:\ Documents and Settings\USERNAME\My Documents"が返されます。

3
M4N

これを試して:

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

1)ユーザーが作業しているWindowsインストールドライブを見つけるにはどうすればよいですか?

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

DocumentsandSettingsのApplicationDataに移動するには、これが必要です。

これを実現するために、システムドライブまたは現在ログインしているユーザー名の値をフェッチする必要はありません。以下のコードに示すように、これらのディレクトリの完全修飾パスを提供する、事前定義された環境変数%localAppData%および%appData%があります。

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)また、ApplicaitionDataに移動できるように、ユーザー名も取得するにはどうすればよいですか?例:「D:\ Documents and Settings\user\Application Data」。

繰り返しますが、上で説明したように、アプリケーションデータパスを取得するためにユーザー名は必要ありません。それでも、知識を得るために、次に示すように%username%環境変数からフェッチできます。

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