Environment.SpecialFolder.CommonApplicationData 返回程序文件/应用程序文件夹

问题描述 投票:0回答:1

我开发了 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)
会给我独立于操作系统版本的正确文件夹。

我尝试以完全管理员权限运行应用程序(加上以管理员身份运行),问题是一样的。应用程序从

Environment.SpecialFolder.CommonApplicationData
获取错误路径。

提前谢谢您!

c# wpf path environment-variables programdata
1个回答
0
投票

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

https://msdn.microsoft.com/en-us/library/system.environmentvariabletarget(v=vs.110).aspx

© www.soinside.com 2019 - 2024. All rights reserved.