【发布时间】:2013-11-15 03:05:06
【问题描述】:
我在我的一个客户的计算机上遇到了一个非常奇怪的行为,我找不到任何关于它发生原因的线索:
当应用程序调用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 文件夹。
【问题讨论】:
-
请将获取路径的代码以及任何代码放置到您评估实际路径的位置。在我看来,字符串只是无意中被修改了。
-
感谢您的参考,但我怀疑它是否适用于此,没有使用 IIS。客户端正在运行 Windows 8 x64,就像我一样,她只使用 Office 2010 32 位。顺便说一句,该应用程序是一个 Excel 插件。
-
您的程序在哪个帐户下运行?
-
好的,我编辑了原始帖子,其中包含为该特定用户引发错误的部分代码。
标签: c# environment-variables appdata