如何通过java程序创建注册表项?
我想通过java程序创建注册表项,在启动时添加jar文件。
RegistryKey r=new RegistryKey(RootKey.HKEY_CURRENT_USER,"Software/Microsoft/Windows/CurrentVersion/Run"); r.createSubkey("sample");
但是我得到了错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: ca.beq.util.win32.registry.RegistryKey.testInitialized()V at ca.beq.util.win32.registry.RegistryKey.testInitialized(Native Method)
我怎样才能做到这一点?
谢谢
来自Javadoc :
如果Java虚拟机无法找到声明为native的方法的适当本机语言定义,则抛出此exception。
你不会在任何机会赢得64胜利吗?
如果没有, jreg的手册提到 :
jRegistryKey
是一个JNI
库。 要使用jRegistryKey
,需要以下文件:
jRegistryKey.jar
jRegistryKey.dll
jRegistryKey.jar是包含打包的Java™类文件的Java™Archive(JAR)文件,而jRegistryKey.dll是Windows®动态链接库(DLL),其中包含访问注册表所需的本机(C / C ++)代码。
jRegistryKey.jar
必须包含在Java™虚拟机(JVM)可用的CLASSPATH
;
jRegistryKey.dll
必须位于Windows®PATH环境变量中包含的目录中,否则将生成java.lang.UnsatisfiedLinkError
在库中添加JRegistryKey.jar
。
然后在我的项目中复制并粘贴JRegistryKey.dll
。
之后我运行相同的程序,成功创建了注册表项。
RegistryKey r=new RegistryKey(RootKey.HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run"); RegistryValue v=new RegistryValue("name or the registrykey",ValueType.REG_SZ,"my jar file path"); r.setValue(v);
在我的项目中添加jregistrykey.dll并不适合我。 我把这个块包含在我的课程中并且有效。
static { System.load("path\\to\\jregistrykey.dll"); }