web-dev-qa-db-ja.com

Environment.SpecialFolder.ApplicationDataが間違ったフォルダを返す

奇妙な問題があります。NET4.0 WPFアプリケーションがデータをApplicationDataフォルダーに保存しています。

 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\myProgram\\";

ケースの99.9%は問題なく機能していますが、一部のコンピューターでは間違ったフォルダーを返します-ユーザーフォルダーを返す代わりに別のフォルダーを返します。

C:\Users\<user>\AppData\Roaming\myProgram\  --correct
C:\Users\s\AppData\Roaming\myProgram\       --wrong

間違ったフォルダには書き込み/読み取り権限がないため、プログラムが動作しません。

プログラムは別のユーザーで実行されているようですが、タスクマネージャーを確認すると、ユーザーはログに記録されたユーザーです。

問題は、権限の少ないドメインユーザーで発生しているようです。

16
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

書きたいテキストファイルを作成しますか?

また、変数を割り当てる必要があります。例:

String path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

if(File.Exists(path + "filetowrite.log"))
{
     ......................
}

また、ファイルを確認する前に、ディレクトリが存在するかどうかを確認してください。ご挨拶、お役に立てば幸いです。

11
Alex