亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4196 | 回復(fù): 0
打印 上一主題 下一主題

在 Java 中操作 Windows 注冊表 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-02-25 11:53 |只看該作者 |倒序瀏覽

想做個東西,要獲IE的代理設(shè)置,看網(wǎng)上介紹基本都是讀取注冊表的方式,沒提到說借助于特定的 Win32 API。而 JDK 提供操作 Windows 的 API 也就是 Preferences,因為這個 API 也是跨平臺的,所功能比較弱,在 Win32 下只能用來操作 HKCU\Software\JavaSoft 和 HKLM\Software\JavaSoft 下及子節(jié)點的數(shù)據(jù)。
自由訪問注冊表其他鍵的值光用 Java 是做不到的,必然方案就是 JNI,一開始也自己來實現(xiàn)這個 JNI 動態(tài)庫,后來懶了一下,想著網(wǎng)上應(yīng)該用現(xiàn)成的實現(xiàn),Google 了一下,果然不出所望,就是
http://www.trustice.com/java/jnireg/index.shtml
下的
registry-3.1.3.zip
(包含源代碼)?梢岳盟L問、修改、導(dǎo)出注冊表項到文件等。解開 registry-3.1.3.zip,在 bin 目錄中可以看到兩個文件 ICE_JNIRegistry.dll 和 registry.jar,動態(tài)庫就是本地代碼實現(xiàn)。
com.ice.jni.registry.Registry.main() 就是 registry 的示例代碼,動態(tài)庫 ICE_JNIRegistry.dll 也是在這個類的靜態(tài)塊中被加載的,記得要把 ICE_JNIRegistry.dll 放在它能夠被加載的位置上,比如你把 registry-3.1.3.zip 解壓到 c:\registry-3.1.3,在命令行下你可以進入到這個目錄中,并執(zhí)行
c:\registry-3.1.3>java -cp registry.jar com.ice.jni.registry.Registry
就可以在 command: 提示符下輸入命令操作注冊表了,輸入 help 會打印出所有能用指令:
keys regKey -- print the key names
values regKey -- print the value names
data regKey subKey -- print the key's data
string regKey subKey -- print REG_SZ key's string
setbin regKey subKey   binaryString -- set REG_BINARY
setdw regKey subKey int -- set REG_DWORD
setstr regKey subKey string -- set REG_SZ
setmulti regKey subKey semiColonString -- set REG_MULTI_SZ
delkey regKey subKey -- delete key 'subKey' of regKey
delval regKey subKey -- delete value 'subKey' of regKey
export regKey fileName -- export registry key to fileName
expand regKey valueName -- expand string value

!! -- repeats last command
$$ -- re-uses previous keyname
Predefined Key Prefixes: (e.g. $0-9)
    $0=HKLM\System\CurrentControlSet\control
    $1=HKLM\Software
    $2=HKLM\Software\Miscrosoft
    $3=HKLM\Software\Microsoft\Windows\CurrentVersion
    $4=HKLM\Software\Microsoft\Windows\CurrentVersion\ProfileList
    $5=HKCU\Software
    $6=HKCU\Software\Microsoft
    $7=HKCU\AppEvents
    $8=HKCU\AppEvents\Schemes
    $9=HKCU\AppEvents\Schemes

比如要讀取 IE 是否啟用代理設(shè)置就可以輸入指令
command: data "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\" ProxyEnable
顯示結(jié)果為:
Value 'ProxyEnable' is [type=4,name=ProxyEnable]
REG_DWORD '0' [x00000000]

'0' 表示未啟用 IE 代理設(shè)置,如果啟用了代理設(shè)置,通過其他幾個字符串值可獲取到具體的代理設(shè)置。如
command: data "%6\\Windows\\CurrentVersion\\Internet Settings\\" ProxyServer
Value 'ProxyServer' is [type=1,name=ProxyServer]
REG_SZ 'ftp=proxy.unmi.com:21;gopher=proxy.unmi.com:8080;http=proxy.unmi.com:8080;https=proxy.unmi.com:8080'
上面用了一個內(nèi)置變量 %6 來代表 HKCU\Software\Microsoft。
其他的指令,大家可以嘗試一下,這里我主要是關(guān)注于讀取鍵值的操作,接下來呢,我們來看看自己寫代碼如何來獲取鍵值。應(yīng)好好的參考 Registry 類的實現(xiàn)。
package com.unmi;   
  •    
    import com.ice.jni.registry.*;   
  •    
    /**   
  • * @author Unmi
    */   
  • public class RegistryManager   
    {   
  •    
         /**   
  •       * @param args
          * @throws RegistryException   
  •       * @throws NoSuchKeyException   
          */   
  •      public static void main(String[] args) throws NoSuchKeyException, RegistryException   
         {   
  •          RegistryKey registryKey = Registry.openSubkey(Registry.HKEY_CURRENT_USER,   
                  "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings" ,   
  •               RegistryKey.ACCESS_READ);   
             RegistryValue registryValue = registryKey.getValue( "ProxyEnable" );   
  •          boolean proxyEnable = ((RegDWordValue)registryValue).getData()!= 0 ;   
                
  •          System.out.println( "IE 是否啟用了代理設(shè)置: " +proxyEnable);   
                
  •          if (proxyEnable)   
             {   
  •              registryValue = registryKey.getValue( "ProxyServer" );   
                 System.out.println( "IE 代理服務(wù)器是: " + new String(registryValue.getByteData()));   
  •          }   
         }   
  • }   
    我在 IE 中為不同協(xié)議設(shè)置了代理后,執(zhí)行上面程序的輸出為(如果要取出 http 代理設(shè)置就分隔進行字符串處理了):
    IE 是否啟用了代理設(shè)置: true
    IE 代理服務(wù)器是: ftp=proxy.unmi.com:21;gopher=proxy.unmi.com:8080;http=proxy.unmi.com:8080;https=proxy.unmi.com:8080

    如果對所有服務(wù)器均使用相同的代理服務(wù)器設(shè)置后,執(zhí)行上面程序的輸出為(默認就是 http 代理設(shè)置了):
    IE 是否啟用了代理設(shè)置: true
    IE 代理服務(wù)器是: proxy.unmi.com:80

    大家可以繼續(xù)挖掘 registry 的修改鍵值及創(chuàng)建子鍵的功能。


    本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u3/94064/showart_2186519.html
  • 您需要登錄后才可以回帖 登錄 | 注冊

    本版積分規(guī)則 發(fā)表回復(fù)

      

    北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年舉報專區(qū)
    中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
    感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP