HKEYByReference result = new HKEYByReference();
int returnCode = MyAdvapi32.INSTANCE.RegConnectRegistry(
"\\\\server-name",
HKEY_LOCAL_MACHINE,
result
);
if (returnCode != 0) {
throw new Win32Exception(returnCode);
}
HKEY key = result.getValue();
// ... use the key, then once done with it ...
MyAdvapi32.INSTANCE.RegCloseKey(key);
顺便说一下,jna-platform库does provide mappings用于Advapi32库,但是RegConnectRegistry似乎丢失了。理想情况下,您可能会创建一个pull请求并将其添加进来,但我们不知道添加后他们推出新版本的速度有多快
# 1 楼答案
WinAPI有一个名为^{} 的函数,这可能是您正在寻找的:
在Java中,如果您添加了^{} 库作为提供现成API类型和函数的依赖项,则函数可能如下所示:
您可能会注意到库加载中使用的
W32APIOptions.DEFAULT_OPTIONS
。Windows API为使用字符串的函数提供了两种不同的实现:一种用于Unicode字符串,另一种用于ANSI字符串。函数名为RegConnectRegistry
,而JNA在DLL中找到的实现名为RegConnectRegistryW
(Unicode)和RegConnectRegistryA
(ANSI)。但是,这些可能不是您所关心的,因为您不是在编写本机代码在中传递默认选项可以让JNA使用正确的函数名,最多可以避免混淆
UnsatisfiedLinkError
用法可能如下所示:
顺便说一下,
jna-platform
库does provide mappings用于Advapi32
库,但是RegConnectRegistry
似乎丢失了。理想情况下,您可能会创建一个pull请求并将其添加进来,但我们不知道添加后他们推出新版本的速度有多快编辑:我已经为JNA创建了一个pull request来添加这个函数