我有c#.net framework 4客户端配置文件应用程序,它使用带有以下内容的app.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="someKey" value="newValue"/>
</appSettings>
</configuration>
当我安装应用程序时,我的文件application.exe.config具有相同的内容。
这就是问题所在。 当我以普通用户身份启动application.exe并从config中加载值时
var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
string value = configFile.AppSettings.Settings["someKey"].Value;
或者像这样
string value = ConfigurationManager.AppSettings["someKey"];
只获取“ oldValue ”。但是,当我以管理员身份启动应用程序时,我会选择“ newValue ”。
感谢您的回复。
答案 0 :(得分:0)
我猜你是VirtualStore的受害者。
您以用户身份更改了 Program Files 文件夹下的配置文件,文件系统将更改写入用户 VirtualStore ,这是用户个人资料中隐藏的位置。< / p>
然后您以管理员身份启动了应用程序,该文件在其 VirtualStore中没有该文件,因此使用存储在 Program Files 中的原始文件。
修复的一种方法是让普通用户读取/写入 Program Files 中的配置文件 - 或者只是以管理员身份编辑配置文件具有写访问权限。 (并确保再次删除用户的VirtualStore版本。)