# jniregistry dword-wert auslesen...



## cookiejar (26. Jul 2010)

hey, ich bins nochmal.... 
habe folgendes problem...


```
public static String read(String path, String name)
	{
			RegistryKey key;
			RegistryValue regvalue;
			int valuetype;
			String value;
			String [] temp = null;
			temp = path.split("/");
			try
			{
				if(temp[0].equals("HKEY_CLASSES_ROOT"))
				{
					key = Registry.HKEY_CLASSES_ROOT;
				}
				else if(temp[0].equals("HKEY_CURRENT_USER"))
				{
					key = Registry.HKEY_CURRENT_USER;
				}
				else if(temp[0].equals("HKEY_USERS"))
				{
					key = Registry.HKEY_USERS;
				}
				else if(temp[0].equals("HKEY_LOCAL_MACHINE"))
				{
					key = Registry.HKEY_LOCAL_MACHINE;
				}
				else if(temp[0].equals("HKEY_CURRENT_CONFIG"))
				{
					key = Registry.HKEY_CURRENT_CONFIG;
				}
				else
				{
					return "Mainpath does not exist";
				}
				for(int i = 1; i < temp.length;i++)
				{
					key = key.openSubKey(temp[i],RegistryKey.ACCESS_ALL);
				}
			} catch (Exception RegistryException) { return "Keypath does not exist"; }				

RegDWordValue dwordValue = new RegDWordValue(key, name, RegDWordValue.REG_DWORD);
				int xxx = dwordValue.getData();
				value = String.valueOf(xxx);
				return value;
          }
```

wenn ich dword werte auslese bekomme ich ständig den wert 0 zurückgegeben, ich sehe einfach nich wo der fehler liegt... kann mir vielleicht jemand helfen?

das schreiben funktioniert jedoch einwandfrei...


```
RegDWordValue dWordValue = new RegDWordValue(key,name,RegistryValue.REG_DWORD);
				int x = 0;
				try
				{
					x = Integer.parseInt (value);
				} catch (Exception E){ return false;}

				dWordValue.setData(x);
				try
				{
					key.setValue(dWordValue);
					return true;
				} catch (Exception RegistryException) { return false;}
```

Ich benutze die dll von J2EE-BLOGS: ICE JNI Registry : Windows Registry API Native Interface , mit der jeweiligen jni und windows 7 64 bit... mit java1.6.16


----------



## cookiejar (31. Jul 2010)

hmmm weiß wirklich niemand ne lösung? 
oder bin ich vielleicht im falschen topic, ich meine es ist ja plattformprogramierung... oder?


----------



## Mr_Pupswindel (18. Mai 2011)

```
String rootKeyName = "\\MY_REG_KEY";
RegistryKey srcKey = Registry.HKEY_CLASSES_ROOT.openSubKey(rootKeyName);
Enumeration<?> valuesKeysSrcKey = srcKey.valueElements();
while(valuesKeysSrcKey.hasMoreElements())
{
  String temp = valuesKeysSrcKey.nextElement().toString();
  if (srcKey.getValue(temp).getType() == 4)
  {
    RegDWordValue dword = (RegDWordValue)srcKey.getValue(temp);
    System.out.println(dword.getData());
  }
}
```


----------

