1、關於java訪問注冊表的疑問
java程序一般不訪問注冊表。沒太大意義,都直接存properties或者xml文件,比如eclipse,都是直接綠色版的。調用jni是個辦法不過,jni就直接調用dll里的函數,dll幫你讀寫注冊表。
2、java中如何監聽注冊表事件?
Java操作windows注冊表
Java語言就以其平台獨立性而受到了許多編程者的選擇,如果讓它來操作注冊表的話,好像
就失去了它的這個特點,然而在實際的編程中,有時候我們很需要在注冊表中存儲軟體的有
關信息,以方便下次啟動的時候初始化或者檢查注冊信息(假設我們在windows平台下)!那麼
究竟用java可以操作windows的注冊表嗎?
在jdk1.4以前的版本中,那是不可能的,只能用JNI來實現,然而在1.4以及以後的版本中我們
就可以用java.util.prefs包中的Preferences這個類來進行有關的操作!有關Preferences的
有關構造函數和方法我在這里就不多說了,你可以去參考java的API文檔!我就直接說說怎麼
來用代碼實現吧!
首先得到Preferences的一個對象,這個對象就規定了你要在注冊表的哪個位置寫入信息,即
節點.然後再用put(String key,String value)或者putInt(),tDouble()...等來給有關項賦
值.
下面我就以我的java媒體播放器中的代碼為例來詳細說明一下:
import java.util.prefs.*;
public class Registery{
String keys = {"version","initial","creator"};
String values = {"1.3","ini.mp3","[email protected]"};
//把相應的值儲存到變數中去
public void writeValue(){
//在注冊表的HKEY_LOCAL_MACHINE\Software\JavaSoft\prefs下寫入注冊表值.
Preferences pre = Preferences.systemRoot().node("/javaplayer");
for(int i = 0; i < keys.length; i++){
pre.put(keys,values);
}
//上面也就規定了version=1.3,initial=ini.mp3,creator=caokai18182sina.com
}
public static void main(String args){
Registery reg = new Registery();
reg.writeValue();
}
}
執行上面的代碼則在注冊表的HKEY_LOCAL_MACHINE\Software\JavaSoft\prefs\javaplayer
項下寫入了有關值.
最後再說明幾點:
1:你的節點的首字母不要大寫,不然在注冊表中的項前就加了一個「/」;
2:注冊表中的值也可以導入到一個XML文件中,具體方法見有關文檔.
3:如果把代碼中的Preferences pre = Preferences.systemRoot().node("/javaplayer");
換成Preferences pre = Preferences.userRoot().node("/javaplayer");則相應的
HKEY_LOCAL_MACHINE就成為HKEY_LOCAL_USER
3、Java 獲取注冊表項
RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\BEQ Technologies");
RegistryValue v = new RegistryValue("myVal", ValueType.REG_SZ, "data");
r.setValue(v);
參考下
4、怎樣通過java獲得注冊表中串口號???
我要使用一個RS232-USB的串口線,現在程序是通過手動輸入串口號的,現在我想通過程序自動獲取串口號,首先我必須獲得注冊表下的串口號才行,像硬體管理器中一樣,插上串口線就顯示串口信息
Hi我看一下
5、客戶端是IE9瀏覽器,如何通過java代碼讀取注冊表判斷客戶端是否安裝了某個軟體?
檢測瀏覽器應該使用user agent的方法來檢測而不是讀取注冊表。
ie9顯著增強了安全性能,js讀取注冊表可能不被允許了。
6、java 讀取注冊表
我不知道你是怎樣寫得,我給你一段自己看下
package CenTo;
/**
* 本程序將在HKEY_CURRENT_USER\Software\JavaSoft\Prefs設置目錄設置相應的操作。
* 本程序實現對注冊表:
* 增加目錄、增加鍵及相應的值、刪除、保存為XML文件
*/
import java.io.*;
import java.util.prefs.*;
public class Prefs {
public static void main(String args[]) {
String denominations[] = {"One", "Two", "Five", "Ten", "Twenty"};
String pictures[] = {"Washington", "Jefferson", "Lincoln", "Hamilton", "Jackson"};
NodeChangeListener nodeChangeListener = new NodeChangeListener() {
public void childAdded(NodeChangeEvent event) {
Preferences parent = event.getParent();
Preferences child = event.getChild();
System.out.println(parent.name() + " has a new child " +child.name());
}
public void childRemoved(NodeChangeEvent event) {
Preferences parent = event.getParent();
Preferences child = event.getChild();
System.out.println(parent.name() + " lost a child " +child.name());
}
};
PreferenceChangeListener preferenceChangeListener = new PreferenceChangeListener() {
public void preferenceChange(PreferenceChangeEvent event) {
String key = event.getKey();
String value = event.getNewValue();
Preferences node = event.getNode();
System.out.println(node.name() + " now has a value of " + value + " for " + key);
}
};
// 設定需要根目錄
Preferences prefs = Preferences.userRoot().node("/net/fubin/ibm");
// 添加監聽
prefs.addNodeChangeListener(nodeChangeListener);
prefs.addPreferenceChangeListener(preferenceChangeListener);
//保存一個束的鍵名和相應的值
for (int i=0, n=denominations.length; i < n; i++) {
prefs.put(denominations[i], pictures[i]);
}
// 顯示所有的鍵名字及值
try {
String keys[] = prefs.keys();
for (int i=0, n=keys.length; i < n; i++) {
System.out.println(keys[i] + ": " + prefs.get(keys[i], "Unknown"));
}
} catch (BackingStoreException e) {
System.err.println("Unable to read backing store: " + e);
}
// 建立 子目錄
Preferences child = Preferences.userRoot().node("/net/fubin/ibm/foo");
//保存為XML文件
try {
FileOutputStream fos = new FileOutputStream("prefs.xml");
prefs.exportNode(fos);
} catch (Exception e) {
System.err.println("Unable to export nodes: " + e);
}
//刪除新生成的接點
try {
prefs.removeNode();
} catch (BackingStoreException e) {
System.err.println("Unable to access backing store: " + e);
}
}
}
7、java中如何監聽注冊表事件?
監聽路徑!
把要操作的路徑和監聽的路徑進行比較!
8、系統發布在伺服器上,如何用java檢測本地的注冊表,我檢測的都是伺服器上的注冊表,求指教
你已經了解到程序運行在伺服器上就只能查伺服器的注冊表,而你希望查客戶端(瀏覽器所在機器?)的?
如果是這樣,我們需要給程序包裝成一個 applet 放在網頁中,然後給這個所在的 jar 來個數字簽名。Java 程序運行在客戶端的沙箱中,涉及到本地資源的利用時需要數字簽名證明自己的程序是來自那個聲明的伺服器並且沒有被別人篡改過,數字簽名能保證未經篡改,而瀏覽器沙箱會自動幫我們申請訪問本地列印機,磁碟和注冊表的許可權。
這種沙箱的安全設置非常必要,如果沒有這個聲明,我們允許網站從自己機器上讀取數據,誰又知道它到底讀取了多少資料,哪些是你在使用它的網頁時必要的而哪些又是偷偷摸摸地上傳的?我們至少需要它明確地說它想讀取我的資料,不可否認,將來如果我們發現它偷了資料我們可以去法院對質,因為它不可否認。
9、JAVA獲取客戶端注冊表鍵值
這個太不現實了!一方面JAVA本來讀注冊表的能力就很弱。另一方面,加上瀏覽器端的許可權,更麻煩。
10、java一般會自動安裝在那?若是忘記了java放在那裡,該如何找到,如何徹底的刪除java和注冊表項?
自動安裝的目錄一般是C:/program files/java.忘記了就搜索一下。刪除java只要到控制面板就能刪干凈