java訪問註冊表剖析

來源:互聯網
上載者:User

 

java 訪問註冊表資訊 之是'ICE_JNIRegistry.DLL'和'registry.jar'

首先先到網上下載一下是ICE_JNIRegistry.DLL和registry.jar這兩個檔案,下載之後將ICE_JNIRegistry.DLL放到tomcat的bin目錄下,把registry.jar放到項目的lib目錄下,(不過網上有見到過說要把2個檔案都要放到lib 和bin下面,我百思不得其解)

如果要讀取某個服務的安裝路徑可以到註冊表的以下目錄中讀取:

HKEY_LOCAL_MACHINE->SOFTWARE->MICROSOFT->WINDOWS-CURRENTVERSION->APP PATHS

然後找到你要找的服務如360safe.exe 其path 描述的就是其安裝路徑,我之前的需求就是知道一個服務名來擷取其安裝路徑,對於其他方面的需求還沒有瞭解過。那麼在JAVA中只要2行簡單的代碼調用就可以完成了,比如我要讀取360safe的安裝路徑,其代碼如下:

RegistryKey software = Registry.HKEY_LOCAL_MACHINE. openSubKey("SOFTWARE"); 
RegistryKey subKey = software.openSubKey("Microsoft").openSubKey("Windows").openSubKey("CurrentVersion").openSubKey("App Paths").openSubKey("360safe.exe");
路徑=subKey.getStringValue("")

但是在實際應用中,會遇到路徑是中文的情況,對於路徑有中文的情況下,我們就要先轉一下編碼,不然會出現中文亂碼的問題。

可以通過下面的方法來完成轉碼:

 private static String enCodeVal(String val)
  {
   try
   {
    byte[] buf = val.getBytes("UNICODE");
    ByteToCharConverter converter = ByteToCharConverter.getConverter("ISO-8859-1");
    char c[] = converter.convertAll(buf);
    int i,j;
    char[] ch = new char[c.length/2+1];
    for (i = 2,j = 0; i < c.length; i++) { //提取有用的字元到新的數組
     if(i%2 == 0)
     {
      ch[j++] = c[i];
     }
    }
    byte[] tmpBuf = new byte[j];
    for(i = 0;i < j;i++)
    {
     tmpBuf[i] = (byte)ch[i];
    }
    converter = ByteToCharConverter.getConverter("GB2312");
    char gbc[] = converter.convertAll(tmpBuf);
   
    return new String(gbc);
   }
   catch(Exception e)
   {
    System.out.println(e.getMessage());
    return null;
   }
  }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.