我在我的一个客户的计算机上遇到了一个非常奇怪的行为,我找不到任何关于为什么会发生这种情况的线索:当应用程序调用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文件夹。
发布于 2013-11-04 22:59:41
由Environment.SpecialFolder.ApplicationData标识的文件夹的实际路径取决于当前用户(启动程序的用户)。
确保程序在ApplicationData文件夹所在的用户帐户下运行。如果你的程序在一个本地系统帐号下运行,你可能需要使用另一个目录。
您可以使用Environment.SpecialFolder.CommonProgramFiles或Environment.SpecialFolder.CommonProgramFilesX86来代替Environment.SpecialFolder.ApplicationData。
https://stackoverflow.com/questions/19768686
复制相似问题