注册表包含 Windows 在运行期间不断引用的信息,例如,每个用户的配置文件、计算机上安装的应用程序以及每个应用程序可以创建的文档类型、文件夹和应用程序图标的属性表设置、系统上存在哪些硬件以及正在使用哪些端口。
注册表取代了 Windows 3.x 和 MS-DOS 配置文件(例如,Autoexec.bat 和 Config.sys)中使用的绝大多数基于文本的 .ini 文件。虽然几个 Windows 操作系统都有注册表,但这些操作系统的注册表有一些区别。
使用Preferences API
Preferences API并不是为访问Windows注册表而设计的,这是值得指出的一点。
我们之所以会有上面的误解是由于Sun的Windows版本的JDK在实现Preferences API时使用了Windows注册表作为存储库,即我们用Preferences API存储的数据会保存到Windows注册表中,这样Preferenes API也就有了访问Windows注册表的能力。但是换到其它的平台或其它厂商的JDK实现又会怎么样呢?这个问题是和Preferences API的实现相关的,我们没有办法回答。
如果程序不关心存储库的细节,只是要找一个存放数据的地方,那么Preferences API很合适。
Preferences API也是有局限的,请您考虑两个问题:
一个Java软件,这次我在Sun的JDK上运行并使用Preferences API保存了我的个人喜好,下次我在IBM的JDK上运行,这时我的个人喜好还可以通过Preferences API得到吗?可能可以也可能不可以,这时的行为是由Sun和IBM的Preferences API实现决定的。(在相同的JDK实现上可以使用Preferences API来在不同的程序间共享数据)
一个Java软件需要让用户设置是否和操作系统一起启动,类似的需求还很多。这类需求就是要求Java程序有真正的和相关操作系统协同的能力。这种能力不是Preferences API的设计目标。
如果您对Preferences API还不了解,那么您可能需要阅读一下这篇文章《用Preferences API存储对象》,可以从参考资料中找到。
使用Preferences API
Preferences API并不是为访问Windows注册表而设计的,这是值得指出的一点。
我们之所以会有上面的误解是由于Sun的Windows版本的JDK在实现Preferences API时使用了Windows注册表作为存储库,即我们用Preferences API存储的数据会保存到Windows注册表中,这样Preferenes API也就有了访问Windows注册表的能力。但是换到其它的平台或其它厂商的JDK实现又会怎么样呢?这个问题是和Preferences API的实现相关的,我们没有办法回答。
如果程序不关心存储库的细节,只是要找一个存放数据的地方,那么Preferences API很合适。
Preferences API也是有局限的,请您考虑两个问题:
一个Java软件,这次我在Sun的JDK上运行并使用Preferences API保存了我的个人喜好,下次我在IBM的JDK上运行,这时我的个人喜好还可以通过Preferences API得到吗?可能可以也可能不可以,这时的行为是由Sun和IBM的Preferences API实现决定的。(在相同的JDK实现上可以使用Preferences API来在不同的程序间共享数据)
一个Java软件需要让用户设置是否和操作系统一起启动,类似的需求还很多。这类需求就是要求Java程序有真正的和相关操作系统协同的能力。这种能力不是Preferences API的设计目标。
如果您对Preferences API还不了解,那么您可能需要阅读一下这篇文章《用Preferences API存储对象》,可以从参考资料中找到。
RegistryKey的方法概要:
方法 简短描述
- void closeKey() 关闭该subkey。
- RegistryKey connectRegistry(java.lang.String hostName) 连接远程主机hostName的注册表。
- RegistryKey createSubKey(java.lang.String subkey, java.lang.String className) 创建和打开该key的subkey,具有写权限。
- RegistryKey createSubKey(java.lang.String subKey, java.lang.String className, int access) 创建和打开该key的