Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GetFolderPath(Environment.SpecialFolders.ApplicationData)返回C:_C#_Environment Variables_Appdata - Fatal编程技术网

C# GetFolderPath(Environment.SpecialFolders.ApplicationData)返回C:

C# GetFolderPath(Environment.SpecialFolders.ApplicationData)返回C:,c#,environment-variables,appdata,C#,Environment Variables,Appdata,我在我的一个客户的电脑上遇到了一个非常奇怪的行为,我找不到任何线索来解释为什么会发生这种情况: 当应用程序调用Environment.GetFolderPath(Environment.SpecialFolders.ApplicationData) 返回值将是C: 这当然是错误的,他的AppData目录是通常的C:\Users\…\AppData\Roaming,而且他的变量%AppData%正好指向该目录 有人能解释为什么会发生这种情况吗 编辑:代码 LogFilePath = Environ

我在我的一个客户的电脑上遇到了一个非常奇怪的行为,我找不到任何线索来解释为什么会发生这种情况: 当应用程序调用
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文件夹。

环境.SpecialFolder.ApplicationData
标识的文件夹的实际路径取决于当前用户(启动程序的用户)

确保程序在存在ApplicationData文件夹的用户帐户下运行。 如果您的程序在本地系统帐户下运行,您可能需要使用其他目录


您可以使用
Environment.SpecialFolder.ApplicationData
而不是
Environment.SpecialFolder.CommonProgramFiles
Environment.SpecialFolder.CommonProgramFilesX86

尝试查看此帖子:请放置获取路径的代码,以及任何代码,直到计算实际路径为止。在我看来,字符串只是在不经意间被修改了。感谢您的参考,但我怀疑它是否适用于这里,没有使用IIS。客户端运行的是Windows8x64,和我一样,她只使用Office201032位。该应用程序是Excel加载项。顺便说一句,您的程序在哪个帐户下运行?好的,我用该特定用户的错误代码部分编辑了原始帖子。我知道当前用户及其%APPDATA%引用了有效目录。我将以何种方式验证该特定用户的ApplicationData文件夹是否确实存在?(除了检查%APPDATA%变量和路径外)为了使应用程序在一台计算机上运行,我不想更改应用程序的文件夹,因此,我很高兴能找到一个实际的解决方案。不过你说得对,我可以通过使用这些文件夹来绕过它。然而,这将使它不可能适应其他用户的需求。