4

クライアントの 1 つのコンピューターで非常に奇妙な動作に遭遇しましたが、その理由についての手がかりが見つかりません。アプリケーションが呼び出すとEnvironment.GetFolderPath(Environment.SpecialFolders.ApplicationData) 、戻り値は になりますC:

これはもちろん間違っています。彼の AppData ディレクトリは通常のものC:\Users\.....\AppData\Roamingであり、彼の変数も%APPDATA%まさにそのディレクトリを指しています。

なぜこれが起こる可能性があるのか​​ 、誰にも光を当てることができますか?

編集:コード...

LogFilePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\ReportsAddin";
if (!Directory.Exists(LogFilePath) && Properties.Settings.Default.Logging == true)
{
    try
    {
        Directory.CreateDirectory(LogFilePath);
    }
    catch (Exception ex)
    {
        // ...
    }
}

次にスローされる例外は、空白文字列または空白スペースで構成されるディレクトリを作成できないことを示しています。いくつかの出力で調査すると、その呼び出しから返される AppData フォルダーは C: であることが示されましたが、実際にはユーザーの実際の AppData フォルダーである必要があります。

4

1 に答える 1

1

によって識別されるフォルダーの実際のパスはEnvironment.SpecialFolder.ApplicationData、現在のユーザー (プログラムを開始したユーザー) によって異なります。

ApplicationData フォルダーが存在するユーザー アカウントでプログラムが実行されていることを確認します。プログラムがローカル システム アカウントなどで実行されている場合は、別のディレクトリを使用することをお勧めします。

代わりにorEnvironment.SpecialFolder.ApplicationDataを使用できます。Environment.SpecialFolder.CommonProgramFilesEnvironment.SpecialFolder.CommonProgramFilesX86

于 2013-11-04T14:59:40.980 に答える