2009-02-25 11 views
7

संभव डुप्लिकेट:
read/write to Windows Registry using Javaप्रवेश Windows रजिस्ट्री

मैं जावा से Windows रजिस्ट्री का उपयोग करने की जरूरत है .. इसके अलावा मैं कुछ रजिस्ट्री प्रविष्टियाँ कॉपी करने की जरूरत है और नए रजिस्ट्री चर में प्रवेश करने के लिए हो सकता है जावा का उपयोग .. कोई मेरी मदद करें ...

उत्तर

5

मैं Java Native Access (JNA) library की अनुशंसा करता हूं। यह जेएनआई के आसपास एक बहुत अच्छा रैपर है। this mailing list post के अनुसार, वे पहले से ही मूल विंडोज रजिस्ट्री फ़ंक्शन कॉल के आसपास एक योगदान रैपर मिला है।

यदि आप अपनी परियोजना में जेएनए पुस्तकालय जोड़ते हैं, the relevant source you'll want is the Registry.java class। वहां से, विंडोज रजिस्ट्री की जांच करने के लिए बस उस वर्ग पर कॉल विधियों को कॉल करें।

एक साइड नोट के रूप में, सुनिश्चित करें कि आप जेएनए का उपयोग करते हैं, जिसे आप Platform.isXxx() का उपयोग करते हैं, यह सुनिश्चित करने के लिए कि आपका कोड वास्तव में विशेष प्लेटफॉर्म पर रजिस्ट्री से पूछताछ कर सके।

2

एक उदाहरण इस तरह होगा:

import com.ice.jni.registry.*; 

public class DeleteEnvironmentVar{ 
public DeleteEnvironmentVar(String variable, String value) throws Exception { 

     RegistryKey machine = Registry.getTopLevelKey("HKEY_LOCAL_MACHINE"); 
     RegistryKey environment = machine.openSubKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment", RegistryKey.ACCESS_WRITE); 
     try { 
      if (value == null) { //Delete the variable in case value is empty 
       environment.deleteValue(variable); 
      }    
     } 
     catch(NoSuchValueException nsve) {} 
     catch(NoSuchKeyException nske) {}   
    } 
} 
1

Preferences वर्ग रजिस्ट्री में लिखने के जावा पसंदीदा तरीका है। हालांकि, मैंने वास्तव में इसका उपयोग नहीं किया है, इसलिए मुझे नहीं पता कि यह पूरी रजिस्ट्री तक पहुंच या केवल JVM या आपके एप्लिकेशन के लिए विशिष्ट अनुभाग तक पहुंच की अनुमति देता है या नहीं। यदि ऐसा नहीं होता है, तो यह आपके उद्देश्य के लिए लगता है, आपको यहां दूसरों द्वारा जेएनआई समाधानों को देखने की आवश्यकता होगी। यदि यह काम करता है, तो आपके पास कभी भी पोर्ट को बंद करने पर आपकी सेटिंग्स को संग्रहीत करने का एक प्लेटफॉर्म-स्वतंत्र तरीका है।

+0

केवल आपके आवेदन के लिए विशिष्ट एक विशिष्ट भाग की अनुमति देता है। – boutta

+1

तथ्य यह है कि प्राथमिकताएं विंडोज सिस्टम पर रजिस्ट्री का उपयोग करती हैं केवल एक कार्यान्वयन विस्तार है - प्राथमिकताएं रजिस्ट्री API नहीं हैं। –

संबंधित मुद्दे