gpt4 book ai didi

c# - 多个应用程序,共享设置 : Use the registry or XML-based configuration?

转载 作者:太空狗 更新时间:2023-10-29 21:37:02 24 4
gpt4 key购买 nike

我的场景

我有一个要从多个单独 可执行应用程序调用的类库。该类库需要知道要访问的数据库服务器地址(以及许多其他配置选项、授权信息等)。我有一个配置和管理应用程序,与类库分开,它也需要知道和设置这些配置选项。

我的问题

将这些用户特定的配置选项存储在 Windows 注册表中是常见的做法吗?还是最好对类库使用典型的“App.config”XML 方法并允许配置改变和修改它的工具?

我倾向于注册表方法,但我知道很多人对不使用它有意见。你会怎么做?

最佳答案

最佳做法是在用户的 %appdata% 目录中使用 XML 配置文件。

这有很多原因:

  1. 您的应用程序很可能安装到 Program Files 中。如果用户尚未授予(或被授予)对您的应用程序进程的管理权限,您将无法写入该文件。
  2. 我曾在部分受信任的环境中工作,在这些环境中根本无法访问注册表。客户端已完全禁用对该服务器上 .NET 运行时的注册表权限。
  3. 您的用户应该始终有权访问他们自己的 %appdata% 目录。这是一个示例:

    string configFilePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "myAppConfig.config";
    ExeConfigurationFileMap map = new ExeConfigurationFileMap();
    map.ExeConfigFilename = configFilePath;
    Configuration cfg = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
    cfg.AppSettings.Settings.Add("mySetting", "myValue!");
    cfg.Save(ConfigurationSaveMode.Modified);

    // to read the setting back

    string mySetting = cfg.AppSettings.Settings["mySetting"].Value;
    // at this point, mySetting = "myValue!"

请记住将 System.Configuration v2.0.0.0 引用添加到您的项目中!默认的 System.Configuration 命名空间没有所有必需的类。

关于c# - 多个应用程序,共享设置 : Use the registry or XML-based configuration?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2193831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com