Atitit.操作注册表 树形数据库 注册表的历史 java版本类库总结

Atitit.

3.2.使用JNI3

1.注册表是树形数据库

树形数据库,但不提供类似SQL的查询接口

2.注册表的由来

在Windows3.x操作系统中,注册表是一个极小文件,其文件名为Reg.dat,里面只存放了某些文件类型的

注册表所设定的默认打开方式

应用程序关联,大部分的设置放在Win.ini、System.ini等多个初始化INI文件中。由于这些初始化文件不便于管理和维护,时常出现一些因INI文件遭到破坏而导致系统无法启动的问题。为了使系统运行得更为稳定、健壮,Windows95/98设计师们借用了WindowsNT中的注册表的思想,将注册表引入到Windows95/98操作系统中,而且将INI文件中的大部分设置也移植到注册表中,因此,注册表在Windows95/98操作系统的启动、运行过程中起着重要的作用。

作者::老哇的爪子Attilax艾龙,EMAIL:1466519819@qq.com

转载请注明来源:

3.Java操作注册表3.1.使用PreferencesAPI(限定访问路径了)

由于java程序是“writeonce,runeverywhere”,用java读写注册表,那程序的跨平台性就差了。java对注册表的操作,在jdk1.4以前的版本中,那是不可能的,只能用JNI来实现;然而jdk1.4之后提供的prefs包可以操作windows注册表,不过定死了root只在SOFTWARE/JavaSoft/prefs下,估计也是出于这种两难吧,又要保证所谓平台无关,还要照顾大家对windows的依赖

。而

自由访问注册表其他键的值光用

PreferencesAPI

我们之所以会有上面的误解是由于

如果程序不关心存储库的细节,只是要找一个存放数据的地方,那么PreferencesAPI很合适。

PreferencesAPI也是有局限的,,请您考虑两个问题:

·一个

·一个

java读写注册表需要用到两种方式:1.java.util.prefs.*中的包其中Preferences.systemRoot()得到的是HKEY_LOCAL_MACHINE/Software/JavaSoft/prefs可以在此位置之下方便的进行注册表的读写Preferences.userRoot()得到的是HKEY_LOCAL_USER/Software/JavaSoft/prefs,可以在此位置下进行注册表

但是对其他位置操作就不方便。示例代码:importjava.util.prefs.*;publicclassRegistery{String[]keys={"aaa","bbb","ccc"};String[]values={"1","2","3"};//把相应的值储存到变量中去publicvoidwriteValue(){//HKEY_LOCAL_MACHINE/Software/JavaSoft/prefs下写入注册表值.Preferencespre=Preferences.systemRoot().node("/javaplayer");for(inti=0;i<keys.length;i++){pre.put(keys,values);}}publicstaticvoidmain(String[]args){Registeryreg=newRegistery();reg.writeValue();}}执行代码的结果会在HKEY_LOCAL_MACHINE/Software/JavaSoft/prefs/javaplayer位置插入三个键值

3.2.使用JNI

Windows

com.ice.jni.registry

2.开源读写注册表的库registry-3.1.3主页地址:下载后需要将ICE_JNIRegistry.dll放到目前正在用的jdk的bin目录下

3.3.Jregistrykey推荐3.4.Jregistry

jRegistry通过JNI技术来访问WINDOWS注册表API。

4.org.openqa.selenium.os.WindowsUtils

writeIntRegistryValue

writeStringRegistryValue

runRegQuery

4.1.以及进程管理

publicstaticvoidmain(String[]args)throwsException{

Line50: publicstaticvoidtraceWith(Loggerlog){

Line54: publicstaticvoidkillByName(Stringname){

Line58: publicstaticvoidtryToKillByName(Stringname){

Line68: publicstaticvoidkill(String[]cmdarray)throwsException{

Line126: privatestaticvoidkillPID(StringprocessID){

Line131: publicstaticMap<String,String>procMap()throwsException{

Line171: publicstaticsynchronizedPropertiesloadEnvironment(){

Line182: publicstaticStringgetProgramFilesPath(){

Line186: publicstaticStringgetProgramFiles86Path(){

Line190: privatestaticStringgetEnvVarPath(StringenvVar,StringdefaultValue){

Line201: publicstaticImmutableList<String>getPathsInProgramFiles(StringchildPath){

Line207: privatestaticStringgetFullPath(Stringparent,Stringchild){

Line211: publicstaticStringgetLocalAppDataPath(){

Line220: publicstaticStringgetEnvVarIgnoreCase(Stringvar){

Line230: publicstaticFilefindSystemRoot(){

Line250: publicstaticStringfindWMIC(){

Line267: publicstaticFilefindWBEM(){

Line280: publicstaticStringfindTaskKill(){

Line295: publicstaticStringfindReg(){

Line319: publicstaticbooleanisRegExeVersion1(){

Line330: publicstaticClass<?>discoverRegistryKeyType(Stringkey){

Line358: publicstaticStringreadStringRegistryValue(Stringkey){

Line384: publicstaticintreadIntRegistryValue(Stringkey){

Line418: publicstaticbooleanreadBooleanRegistryValue(Stringkey){

Line431: publicstaticbooleandoesRegistryValueExist(Stringkey){

Line452: publicstaticvoidwriteStringRegistryValue(Stringkey,Stringdata)

Line477: privatestaticStringexecuteCommand(StringcommandName,String[]args){

Line489: publicstaticvoidwriteIntRegistryValue(Stringkey,intdata){

Line517: publicstaticvoidwriteBooleanRegistryValue(Stringkey,booleandata){

Line521: publicstaticvoiddeleteRegistryValue(Stringkey){

Line540: privatestaticStringrunRegQuery(Stringkey){

Line556: publicstaticbooleanthisIsWindows(){

Line560: privatestaticclassRegKeyValue{

参考

Atitit.各种数据类型(树形结构,)的结构与存储数据库attilax总结.doc

我们可以沿途用镜头记录彼此的笑脸,和属于我们的风景。

Atitit.操作注册表 树形数据库 注册表的历史 java版本类库总结

相关文章:

你感兴趣的文章:

标签云: