在 Windows 上存储信息有哪些选项?我应该如何阅读此信息
What options do I have for storing information on Windows? How should I read this information?
我有什么选项可以在Windows上存储信息?
我正在考虑创建一个文件或使用注册表,但如果文件变得太大并且注册表有点太容易被用户访问,则该文件可能会变得相当烦人。
我不希望最多超过 100 个条目,它们看起来像这样。
约翰·香蕉
马库斯·苹果
等。
我意识到这不会产生太大的文件,但我不想每次需要信息时都解析它。我正在考虑在启动时将信息读取到应用程序中,但这不会产生性能问题吗?或者也许它太少了,除了旧电脑之外无关紧要?还有其他选择吗?也许我可以加密信息并将其放入注册表中?注册表是否适合放置多个条目,例如?
请注意,当我编程时,在提高效率方面,我有时会有点过火了。请原谅我的无知。
你问我有什么选项可以在Windows上存储信息?基本上,有三种主要策略:
- 使用计算机的注册表并使用注册表 API 访问它。
- 使用 INI 文件格式的纯文本文件并使用私有配置文件字符串 API 来访问它。
- 使用自己格式的平面文本文件并使用自己的文件处理以访问它。
这些策略中的任何一个都将实现存储数据的目标。
但是,在Windows平台上,您必须考虑一个更重要的问题,它将为您提供答案:
我的应用程序的用户是否希望将其数据移动到另一台计算机并在另一台计算机上运行我的应用程序?
如果上述问题的答案是肯定的,那么 (2) 或 (3) 将是您的答案,因为将磁盘上的文件从一台计算机移动到另一台计算机是一项简单的任务。另一方面,对于普通计算机用户来说,在机器之间移动注册表项并不是一项简单的任务,在应用程序中对函数进行编码以将注册表数据库导出到平面文件并重新导入它们的任务也不是一项简单任务。
在 (2) 和 (3) 中,(2) 是最简单的,因为 Windows 具有现有的 API 来为您获取文件的内容;(3)需要你自己编写例程。最终,它将取决于您希望如何构建数据。
如果上述问题的答案是否定的,那么 (1)、(2) 或 (3) 中的任何一个都是可以的,因为用户不会关心数据的存储方式。
上述策略都不比其他任何策略更易于访问(如果您担心用户能够查看您的数据)。如果您担心您的数据可见,请在您最终选择的方法中添加加密。
- 我应该使用什么来代替void作为变体中的替代类型之一
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 我应该删除矢量<short>吗?
- 我应该如何修改此代码以使用给定字符串中的字母打印菱形图案
- 我应该在锁定TBitmap画布后解锁它吗
- 为什么我应该在异常处理中使用std::cerr而不是std::cout
- 我应该避免多重实现继承吗
- 为了方便起见,我应该避免公开私有字段变量吗
- 我收到同义重复编译器错误。我应该如何修复"类型"X"的参数与类型"X"的参数不兼容?
- 违反const正确性:我应该现实地期待什么问题
- 我应该如何表示我拥有的连续元素序列?
- 我应该将除 .cpp 以外的其他文件添加到 git 中吗?
- 我应该如何从 stdin C++ 中读取可变长度的格式字符串?
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 我应该如何捕捉out_of_range异常?
- 我应该声明所有不抛出 noexexcept 的成员/函数吗?
- 我应该如何存储从文件中获取的这些信息?
- 在 Windows 上存储信息有哪些选项?我应该如何阅读此信息