来自应用程序配置的奇怪值

时间:2016-05-11 14:23:35

标签: c# app-config

我有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 ”。

感谢您的回复。

1 个答案:

答案 0 :(得分:0)

我猜你是VirtualStore的受害者。

您以用户身份更改了 Program Files 文件夹下的配置文件,文件系统将更改写入用户 VirtualStore ,这是用户个人资料中隐藏的位置。< / p>

然后您以管理员身份启动了应用程序,该文件在 VirtualStore中没有该文件,因此使用存储在 Program Files 中的原始文件。

修复的一种方法是让普通用户读取/写入 Program Files 中的配置文件 - 或者只是以管理员身份编辑配置文件具有写访问权限。 (并确保再次删除用户的VirtualStore版本。)