1)ユーザーが作業しているWindowsインストールドライブを見つけるにはどうすればよいですか? DocumentsandSettingsのApplicationDataに移動するには、これが必要です。
2)また、どのようにしてユーザー名を取得して、ApplicaitionDataに移動できるようにしますか?例:「D:\ Documents and Settings\user\Application Data」。
これを行うには、 Environment.GetFolderPath と Environment.SpecialFolder を組み合わせて見てください。
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
あなたがしていることに応じて、あなたも見たいかもしれません
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
ユーザーがドメイン上にある場合、ローカルのAppData
フォルダーにのみ保存され、ローミングプロファイルとは同期されません。
Environment.SpecialFolder.ApplicationData;
Environment.SpecialFolder.System
これにより、ユーザー名の要件も満たされます。
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"が返されます。
これを試して:
string filePath = Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData);
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%");