Java 之登錄檔操作
阿新 • • 發佈:2019-01-08
Windows Registry API Native Interface下載地址 http://www.trustice.com/java/jnireg/index.shtml 下 registry-3.1.3.zip(包含原始碼)。解開 registry-3.1.3.zip,在 bin 目錄中可以看到兩個檔案 ICE_JNIRegistry.dll 和registry.jar,動態庫就是原生代碼實現。
import com.ice.jni.registry.*;
import java.text.SimpleDateFormat;
/**
* java 操作登錄檔
* @author 李志遠
*/
public class RegeditTool {
static SimpleDateFormat shortDateFormat = new SimpleDateFormat
("yyyy-MM-dd");
/** Creates a new instance of test */
// 把資訊儲存到登錄檔HKEY_LOCAL_MACHINE下的某個節點的某一變數中,有則
修改,無則建立
public static boolean setValue(String folder, String subKeyNode,
String subKeyName, String subKeyValue) {
try {
RegistryKey software = Registry.HKEY_LOCAL_MACHINE
.openSubKey(folder);
RegistryKey subKey = software.createSubKey(subKeyNode, "");
subKey
.setValue(new RegStringValue(subKey, subKeyName,
subKeyValue));
subKey.closeKey();
return true;
} catch (NoSuchKeyException e) {
e.printStackTrace();
} catch (NoSuchValueException e) {
e.printStackTrace();
} catch (RegistryException e) {
e.printStackTrace();
}
return false;
}
// 刪除登錄檔中某節點下的某個變數
public static boolean deleteValue(String folder, String subKeyNode,
String subKeyName) {
try {
RegistryKey software = Registry.HKEY_LOCAL_MACHINE
.openSubKey(folder);
RegistryKey subKey = software.createSubKey(subKeyNode, "");
subKey.deleteValue(subKeyName);
subKey.closeKey();
return true;
} catch (NoSuchKeyException e) {
System.out.println("NOsuchKey_delete");
} catch (NoSuchValueException e) {
System.out.println("NOsuchValue_delete");
} catch (RegistryException e) {
e.printStackTrace();
}
return false;
}
// 刪除登錄檔中某節點下的某節點
public static boolean deleteSubKey(String folder, String
subKeyNode) {
try {
RegistryKey software = Registry.HKEY_LOCAL_MACHINE
.openSubKey(folder);
software.deleteSubKey(subKeyNode);
software.closeKey();
return true;
} catch (NoSuchKeyException e) {
e.printStackTrace();
} catch (RegistryException e) {
e.printStackTrace();
}
return false;
}
// 開啟登錄檔項並讀出相應的變數名的值
public static String getValue(String folder, String subKeyNode,
String subKeyName) {
String value = "";
try {
RegistryKey software = Registry.HKEY_LOCAL_MACHINE
.openSubKey(folder);
RegistryKey subKey = software.openSubKey(subKeyNode);
value = subKey.getStringValue(subKeyName);
subKey.closeKey();
} catch (NoSuchKeyException e) {
value = "NoSuchKey";
// e.printStackTrace();
} catch (NoSuchValueException e) {
value = "NoSuchValue";
// e.printStackTrace();
} catch (RegistryException e) {
e.printStackTrace();
}
return value;
}
// 測試
public static void main(String[] args) {
setValue("SOFTWARE", "Microsoft\\Windows\\CurrentVersion\\Run",
"test",
"C:\\1.exe");
}
}
import com.ice.jni.registry.*;
import java.text.SimpleDateFormat;
/**
* java 操作登錄檔
* @author 李志遠
*/
public class RegeditTool {
static SimpleDateFormat shortDateFormat = new SimpleDateFormat
("yyyy-MM-dd");
/** Creates a new instance of test */
// 把資訊儲存到登錄檔HKEY_LOCAL_MACHINE下的某個節點的某一變數中,有則
修改,無則建立
public static boolean setValue(String folder, String subKeyNode,
String subKeyName, String subKeyValue) {
try {
RegistryKey software = Registry.HKEY_LOCAL_MACHINE
.openSubKey(folder);
RegistryKey subKey = software.createSubKey(subKeyNode, "");
subKey
.setValue(new RegStringValue(subKey, subKeyName,
subKeyValue));
subKey.closeKey();
return true;
} catch (NoSuchKeyException e) {
e.printStackTrace();
} catch (NoSuchValueException e) {
e.printStackTrace();
} catch (RegistryException e) {
e.printStackTrace();
}
return false;
}
// 刪除登錄檔中某節點下的某個變數
public static boolean deleteValue(String folder, String subKeyNode,
String subKeyName) {
try {
RegistryKey software = Registry.HKEY_LOCAL_MACHINE
.openSubKey(folder);
RegistryKey subKey = software.createSubKey(subKeyNode, "");
subKey.deleteValue(subKeyName);
subKey.closeKey();
return true;
} catch (NoSuchKeyException e) {
System.out.println("NOsuchKey_delete");
} catch (NoSuchValueException e) {
System.out.println("NOsuchValue_delete");
} catch (RegistryException e) {
e.printStackTrace();
}
return false;
}
// 刪除登錄檔中某節點下的某節點
public static boolean deleteSubKey(String folder, String
subKeyNode) {
try {
RegistryKey software = Registry.HKEY_LOCAL_MACHINE
.openSubKey(folder);
software.deleteSubKey(subKeyNode);
software.closeKey();
return true;
} catch (NoSuchKeyException e) {
e.printStackTrace();
} catch (RegistryException e) {
e.printStackTrace();
}
return false;
}
// 開啟登錄檔項並讀出相應的變數名的值
public static String getValue(String folder, String subKeyNode,
String subKeyName) {
String value = "";
try {
RegistryKey software = Registry.HKEY_LOCAL_MACHINE
.openSubKey(folder);
RegistryKey subKey = software.openSubKey(subKeyNode);
value = subKey.getStringValue(subKeyName);
subKey.closeKey();
} catch (NoSuchKeyException e) {
value = "NoSuchKey";
// e.printStackTrace();
} catch (NoSuchValueException e) {
value = "NoSuchValue";
// e.printStackTrace();
} catch (RegistryException e) {
e.printStackTrace();
}
return value;
}
// 測試
public static void main(String[] args) {
setValue("SOFTWARE", "Microsoft\\Windows\\CurrentVersion\\Run",
"test",
"C:\\1.exe");
}
}