将用户设置文件存储在可执行文件目录中

本文关键字:可执行 文件目录 存储 用户 设置 文件 | 更新日期: 2023-09-27 18:32:50

我正在开发一个.NET 4.0软件,它可以读取和写入应用程序设置。完成后,软件将存储在文件服务器上。不会执行任何本地实例。

默认情况下,用户设置 XML 文件存储在每个用户AppData'...目录中,但我想将文件位置更改为存储可执行文件的同一目录。

这意味着,所有用户都应使用具有修改内容的同一 XML 用户设置文件。

我已经阅读了这个问题并回答了用户描述如何以 JSON 格式实现这一点的答案。

问题:难道没有其他(简单(方法来告诉Settings类,从哪里读取和写入用户设置?

已经讨论了以下内容:

  • 用户将始终具有足够的访问权限来修改设置文件。
  • 对设置的修改应由其他用户选取。
  • 用户将从不同的网络计算机启动应用程序。
  • 我可以实现由应用程序处理的自己的XML文件(我会记住这一点(。

将用户设置文件存储在可执行文件目录中

我不确定您是否可以通过标准设置类获得所需的功能。但我确实认为你的搜索最终结果是可以实现的。

如果您希望立即对用户 2 强制执行用户 1 所做的设置更改,则应考虑将设置存储在数据库中。然后,可以定期检查此表的更改。例如,如果用户 1 更改了控件的颜色,则每次用户 2 使用该控件加载屏幕时,您都会检查数据库中的颜色。

或者,如果您希望在应用程序启动时应用这些设置。使用数据协定 + xml 序列化程序将设置写入网络可访问路径/文件夹上所选的文件。然后确保您可以处理此文件的读/写锁定。

这些只是我认为您应该考虑的一般想法。我并不是说这些是你唯一的选择。如果你想追求这些东西中的任何一个,这里有一堆博客和堆栈溢出页面,其中包含您需要的所有信息。

祝你好运!

我在项目中添加了一个名为 AppSettings.config 的自定义Application Configuration File,并将其 Copy to output 属性设置为 Copy if newer(这会在构建项目时将配置文件复制到可执行文件文件夹中。

我的设置必须分类为 appSettings ,而不是applicationSettings(不可编辑(或userSettings(存储在用户AppData文件夹中(。下面是一个示例:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <!-- single values -->
    <add key="Name" value="Chris" />
    <add key="Age" value="25" />
    <!-- lists, semi-colon separated-->
    <add key="Hobbies" value="Football;Volleyball;Wakeboarding" />
  </appSettings>
</configuration>

看看下面的代码,如何访问和修改它们:

Configuration AppConfiguration =
    ConfigurationManager.OpenMappedExeConfiguration(
        new ExeConfigurationFileMap {ExeConfigFilename = "AppSettings.config"}, ConfigurationUserLevel.None);
var settings = AppConfiguration.AppSettings.Settings;
// access
var name = settings["Name"].Value;
var age = settings["Age"].Value;
var hobbies = settings["Hobbies"].Value.Split(new[]{';'});
// modify
settings["Age"].Value = "50";
// store (writes the physical file)
AppConfiguration.Save(ConfigurationSaveMode.Modified);

我将内置app.config用于默认应用程序设置,并希望将它们与 AppSettings.config 中的可编辑全局设置分开。这就是我使用自定义配置文件的原因。


这不是问题的直接答案,但它解决了如何在自定义配置文件中存储和共享可编辑应用程序设置的问题。

希望它可以帮助任何其他用户! :-(