c# – 如何写入主exe的.config userSettings部分?

c# – 如何写入主exe的.config userSettings部分?,第1张

概述.NET 2.0中是否有任何支持的API用于写入主exe的.config文件的userSettings部分? 场景是: Winforms 2.0应用程序. 我有一个具有用户级别范围的设置(数据库连接字符串,如果您需要知道).这意味着当用户保存设置的值时,每个用户都有.net创建的user.config文件. 对于第一次运行应用程序的新用户,应用程序的主exe .config文件在用户设置部分中包含 .NET 2.0中是否有任何支持的API用于写入主exe的.config文件的userSettings部分?

场景是:

Winforms 2.0应用程序.

我有一个具有用户级别范围的设置(数据库连接字符串,如果您需要知道).这意味着当用户保存设置的值时,每个用户都有.net创建的user.config文件.

对于第一次运行应用程序的新用户,应用程序的主exe .config文件在用户设置部分中包含默认值.在项目属性的“设置”选项卡中创建设置时,此部分由visual studio创建.

现在,我想允许计算机中的任何管理员用户能够更改新用户的默认值.只有管​​理员才有此选项,因为普通用户无权写入主exe的.config文件.

我已经找到了如何将用户设置写入用户的.config文件,以及如何写入主.config文件的appSettings部分.但是当我试图找出如何写入主.config的userSettings部分时,我的谷歌搜索失败了

我唯一的机会是失败回System.Xml并在Xmldocument中手动加载.config吗?

解决方法 经过一番研究,我想出了这个解决方案.它有点低级,但仍然可以通过.NET配置API而无需手动解析.config文件.
static voID SaveUserSettingDefault(string clIEntSectionname,string settingname,object settingValue){    System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);    // find section group    ConfigurationSectionGroup group = config.SectionGroups[@"userSettings"];    if (group == null) return;    // find clIEnt section    ClIEntSettingsSection clIEntSection = group.Sections[clIEntSectionname] as ClIEntSettingsSection;    if (clIEntSection == null) return;    // find setting element    SettingElement settingElement = null;    foreach (SettingElement s in clIEntSection.Settings)    {        if (s.name == settingname)        {            settingElement = s;            break;        }    }    if (settingElement == null) return;    // remove the current value    clIEntSection.Settings.Remove(settingElement);    // change the value    settingElement.Value.ValueXml.InnerText = settingValue.ToString();    // add the setting    clIEntSection.Settings.Add(settingElement);    // save changes    config.Save(ConfigurationSaveMode.Full);}

给定一个包含以下内容的.config:

<?xml version="1.0" enCoding="utf-8" ?><configuration>    <configSections>        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup,System,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" >            <section name="MyAssembly.PropertIEs.Settings" type="System.Configuration.ClIEntSettingsSection,PublicKeyToken=b77a5c561934e089" allowExeDeFinition="MachinetoLocalUser" requirePermission="false" />        </sectionGroup>    </configSections>    <userSettings>        <MyAssembly.PropertIEs.Settings>            <setting name="sqlConnectionString" serializeAs="String">                <value>Server=(local);Database=myDatabase;Integrated Security=true;</value>            </setting>        </MyAssembly.PropertIEs.Settings>    </userSettings></configuration>

你会像这样使用它:

if (RunningAsadmin) // save value in main exe's config file{    SaveUserSettingDefault(@"MyAssembly.PropertIEs.Settings",@"sqlConnectionString",theNewConnectionString);}else // save setting in user's config file{    Settings.Default. sqlConnectionString = theNewConnectionString;    Settings.Default.Save();}
总结

以上是内存溢出为你收集整理的c# – 如何写入主exe的.config userSettings部分?全部内容,希望文章能够帮你解决c# – 如何写入主exe的.config userSettings部分?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1248853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存