我开发了 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 检查并尝试查看路径是否错误,而不是手动更正它,但这样做听起来并不好。
我一直认为 usingEnvironment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
会给我独立于操作系统版本的正确文件夹。
我尝试以完全管理员权限运行应用程序(加上以管理员身份运行),问题是一样的。应用程序从Environment.SpecialFolder.CommonApplicationData
.
先感谢您!