4

我在我的一个客户的计算机上遇到了一个非常奇怪的行为,我找不到任何关于它发生原因的线索:当应用程序调用时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

The actual path for the folder identified by Environment.SpecialFolder.ApplicationData depends on the current user (who started the program).

Make sure the program runs under a user account for which the ApplicationData folder exists. If your program runs under e.g. a local system account you may want to use another directory.

Instead of Environment.SpecialFolder.ApplicationData you could use Environment.SpecialFolder.CommonProgramFiles or Environment.SpecialFolder.CommonProgramFilesX86.

于 2013-11-04T14:59:40.980 回答