【发布时间】:2014-03-05 20:24:45
【问题描述】:
在我的应用程序中,有一些设置保存在 Properties.Settings.Default 中。这些设置可由用户更改,并且需要本地保存在计算机上。虽然我可以保存这些设置,但问题是它只为当前登录的用户保存。一旦用户更改了设置,它必须适用于计算机的所有用户。我怎样才能做到这一点?
【问题讨论】:
标签: c# wpf settings application-settings
在我的应用程序中,有一些设置保存在 Properties.Settings.Default 中。这些设置可由用户更改,并且需要本地保存在计算机上。虽然我可以保存这些设置,但问题是它只为当前登录的用户保存。一旦用户更改了设置,它必须适用于计算机的所有用户。我怎样才能做到这一点?
【问题讨论】:
标签: c# wpf settings application-settings
用户范围的设置就是这样,单个用户可以更改并且只会为该用户保存的设置。
应用程序范围的设置将影响所有用户,但它们并非旨在由用户更改。
您可能需要考虑一种不同的方法来存储您希望用户能够更改但会影响应用程序的所有用户的设置,例如Windows 注册表或外部 xml 文件。
另一个选项是使用用户范围设置,但将位置更改为集中位置,以便所有用户使用/保存相同的设置。有关如何执行此操作的选项,请参阅 Store user settings into application folder。
【讨论】:
当您在 Visual Studio 中打开“设置设计器”窗口时,您需要为每个设置输入四个值:
您需要将Scope 属性设置为Application,以使所有用户的设置都相同。有关完整故事,请阅读 MSDN 上的 Using Application Settings and User Settings 页面。
【讨论】:
应用程序设置无法更改,只能在应用程序运行前手动更改,因此我不推荐这种方法。
在我看来,传播更改通常可能是一种不好的方法。由于这个配置(user.config)一般存放在用户自己的文件夹中(Users下),所以不应该被其他用户修改(事实上,没有管理员权限,其他用户甚至无法访问)。
我可能会建议使用其他位置来存储应用程序特定的设置:应用程序附近的 xml 或 config 文件,或者可能是注册表。
【讨论】:
我会为这些东西使用外部数据库... 但是,如果您希望它快速简单,只需将其保存到硬盘驱动器上的文件(例如 C:\Program_Data\\settings.csv)我会使用 csv 文件,因为它的工作量不大......
【讨论】: