Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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# Environment.SpecialFolder.CommonApplicationData返回程序文件/App文件夹_C#_Wpf_Path_Environment Variables_Programdata - Fatal编程技术网

C# Environment.SpecialFolder.CommonApplicationData返回程序文件/App文件夹

C# Environment.SpecialFolder.CommonApplicationData返回程序文件/App文件夹,c#,wpf,path,environment-variables,programdata,C#,Wpf,Path,Environment Variables,Programdata,我开发了WPF应用程序(.NET 4.5),它将一些配置文件存储在CommonApplicationData文件夹中 为此,我使用以下方法: string AppDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); 此外,我还将公司名称/产品文件夹添加到该路径,99.9%的情况下一切正常。应用程序能够在那个里写入配置并读取它。该应用程序主要用于Win7和Win8机器,但我

我开发了WPF应用程序(.NET 4.5),它将一些配置文件存储在CommonApplicationData文件夹中

为此,我使用以下方法:

string AppDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
此外,我还将公司名称/产品文件夹添加到该路径,99.9%的情况下一切正常。应用程序能够在那个里写入配置并读取它。该应用程序主要用于Win7和Win8机器,但我从客户端收到报告,其中一台机器出现了一些错误(Windows 7 Pro、.Net 4.5)

当我尝试调试该问题时,我在日志中发现以下内容:

System.IO.DirectoryNotFoundException:找不到路径“C:\Program Files(x86)\CompanyName\App\X\Y\Z\settings.config”的一部分

在哪里

X\Y\Z\settings.config

应该是
C:\ProgramData
的一部分,但应用程序不知何故返回了安装应用程序的文件夹(程序文件)。我试图在多台机器和多个环境中复制这一点,但没有成功

我的问题是:

是否可以更改Windows中Environment.SpecialFolder.CommonApplicationData的位置?这是安全问题(组策略)吗?也许有人改变了道路

我不知道为什么在这种情况下,应用程序返回的文件夹与
C:\ProgramData

如果可能,我可以在哪里检查
Environment.SpecialFolder.CommonApplicationData
的值(编程除外)

有什么建议或解决方案吗

我总是可以做一些if检查,并尝试查看路径是否错误,而不是手动更正它,但这样做听起来不太好

我一直认为使用
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
将为我提供独立于操作系统版本的正确文件夹

我试着用完全的管理员权限运行应用程序(加上以管理员身份运行),问题也是一样的。应用程序从
环境.SpecialFolder.CommonApplicationData
获取错误路径


提前谢谢你

本文解释了您可以在注册表中的何处检查是否已为此枚举设置了用户环境变量


我刚刚在regedit中检查了用户和机器环境,但我没有在任何地方看到CommonApplicationData或ProgramDate文件夹值的提及或定义。程序运行正常,能够查找、读取和写入programdata/app/文件夹。我说的是我的机器没有问题。我会在目标机器上检查它,但我假设注册表项是相同的。