9

存储界面选择的广泛接受的方式是什么,例如“不再显示此消息”设置,以及用户的任何其他特定于界面的选择?注册表?设置文件?我也可以将它们存储在数据库中,因为我的程序已经可以访问一个。

编辑 我目前的程序是本地的,但是在未来我想让它基于网络。

4

8 回答 8

7

非基于网络的程序:

我不会使用数据库。如果您决定切换数据库会发生什么?现在您必须迁移用户数据。如果他们卸载会发生什么?

在 Windows 中,用户的 AppData 文件夹中的设置文件是合适的。在卸载时不删除这些也是可以接受的,因此设置将持续存在。我会回避注册表进行用户设置。该区域更适合系统设置。

*nix 系统中也有类似的区域,但我不确定是否在我的脑海中。这很久了。


具有本地设置的基于 Web 的程序:

Cookie 几乎是基于 Web 的程序的唯一特定于计算机的选项。基于 IP 的过滤器不是一个好主意,因为大多数消费者互联网选项会将 IP 每天轮换一次到每周一次。您可以进行 MAC 过滤,但这将涉及使用原始套接字来获取 MAC 地址。即便如此,您最终可能会得到路由器的地址,而不是计算机的地址。这意味着单个路由器上的两个人将获得相同的设置。


具有全局设置的基于 Web 的程序:

您的程序应该为此查询 Web 服务。然后,该服务可以自由地以当时最好的方式实施。数据库适合这种情况,因为您的用户数据很可能已经存在并在其中键入,从而提供了一种将数据与特定用户相关联的简单方法。

于 2010-07-23T14:00:38.597 回答
2

如果它是与 Web 相关的环境:取决于您希望它们停留多长时间。如果数据库中有成员注册,则将其保存在数据库中是完全有意义的。否则,您可以将其保存为数据库中的 cookie 或 ip/设置。

于 2010-07-23T14:00:23.467 回答
2

假设您的意思是在 Windows 应用程序上,.NET应用程序设置功能默认使用文件系统(尽管您可以使用注册表或其他任何东西,因为它是可插入的)。

于 2010-07-23T14:00:39.397 回答
2

您可以将它们存放在最方便的地方。

在数据库中 - 如果数据库是远程的,您不需要访问本地文件存储,但这确实意味着如果连接不存在,您将无法访问首选项。

在注册表中- 您需要确保您正在使用 CURRENT_USER 区域,以便用户可以实际写入它。特定于 Windows。

在文件中- 本地存储意味着您不依赖与数据库的连接,但您需要再次确保用户对您要将文件保存到的文件夹具有权限。C#/.NET 提供了用于读取和写入用户设置文件的类,因此这可能是您的最佳选择。

于 2010-07-23T14:00:53.047 回答
1

它通常由 Windows 通过 API 处理。MSDN 文章How to: Program Exception Message Box解释了如何使用 .NET 进行操作。根据文章,如果您想以这种方式永久存储决定,则异常存储在注册表中。

您还可以将决定存储在自定义 XML 配置文件中,使用您的应用程序设置文件来存储它,或者存储在数据库中。由您决定最简单的实现和最少的麻烦。

新的推荐方法是将其存储在用户的应用程序数据目录下。请参阅Technet 上的数据和设置管理

于 2010-07-23T14:00:49.037 回答
1

在 Windows 上,“新”方式是将配置存储在用户的“App-Data”(CSIDL_APPDATA)文件夹中。

于 2010-07-23T14:01:41.313 回答
1

我的建议是存储在应用程序安装或 App_Data 中的文件(INI、设置等)。将它存储在注册表中绝对是一种流行的方法,但是当它不再相关时清理它似乎并不那么流行。因此,如果您决定使用注册表,请在需要时自行清理(卸载、注册表项结构更改等)

于 2010-07-23T14:04:38.653 回答
1

我已将个人用户设置存储在使用特定位置数据库的 WinfForms 应用程序的数据库中。这很有效,因为当用户在不同的客户端机器上登录时,他们的显示设置也会随之移动。

于 2010-07-23T14:20:54.450 回答