我一直在寻找使用 System::Configuration 来创建和修改位于 AppData/Local/myapplicationname/ 下的 user.config 文件的正确方法。我使用配置管理器打开一个本地用户级别的配置对象。AppData/Local 下尚不存在 user.config 文件,因此我调用 Configuration::Save() 方法来创建它(MSDN 文档指出,如果文件不存在,此方法将创建该文件)。
Configuration^ C = ConfigurationManager::OpenExeConfiguration(ConfigurationUserLevel::PerUserRoamingAndLocal);
MessageBox::Show(C->FilePath); // Shows "rootpath/AppData/Local/myappname/user.config"
MessageBox::Show(C->HasFile.ToString()); // Shows "false" since user.config hasn't been created yet.
C->Save(ConfigurationSaveMode::Full);
没有任何反应,没有创建 user.config 文件,也没有错误消息。如果我改用 Configuration::SaveAs() ,我会收到错误消息:
"The file name 'rootpath\AppData\Local\myappname\user.config' is invalid because the same file name is already referenced by the configuration hierarchy you have opened."
我在这里做错了什么?我对 MSDN 没有解释如何将 System::Configuration 用于除 app.config 之外的任何内容感到非常恼火。我不想使用 app.config,因为设置是用户级别的,用户可以随时更改。如果必须,我会使用 app.config,但由于 UAC,我什至不能这样做。任何帮助将不胜感激。谢谢大家!