RegConnectRegistryA 函数 (winreg.h)
建立与另一台计算机上的预定义注册表项的连接。
语法
LSTATUS RegConnectRegistryA(
[in, optional] LPCSTR lpMachineName,
[in] HKEY hKey,
[out] PHKEY phkResult
);
参数
[in, optional] lpMachineName
远程计算机的名称。 字符串具有以下形式:
\\computername
调用方必须有权访问远程计算机,否则函数将失败。
如果此参数为 NULL,则使用本地计算机名称。
[in] hKey
预定义的注册表句柄。 此参数可以是远程计算机上的以下 预定义键 之一。
HKEY_LOCAL_MACHINEHKEY_PERFORMANCE_DATAHKEY_USERS
[out] phkResult
指向变量的指针,该变量接收标识远程计算机上的预定义句柄的键句柄。
返回值
如果函数成功,则返回值为 ERROR_SUCCESS。
如果函数失败,则返回值为 Winerror.h 中定义的非零错误代码。 可以将 FormatMessage 函数与 FORMAT_MESSAGE_FROM_SYSTEM 标志结合使用来获取错误的常规说明。
注解
RegConnectRegistry 要求远程注册表服务在远程计算机上运行。 默认情况下,此服务配置为手动启动。 若要将远程注册表服务配置为自动启动,请运行 Services.msc 并将服务的启动类型更改为“自动”。
Windows Server 2003 和 Windows XP/2000: 默认情况下,远程注册表服务配置为自动启动。
不再需要 RegConnectRegistry 返回的句柄时,应通过调用 RegCloseKey 将其关闭。
如果计算机已加入工作组,并且启用了“强制使用本地帐户进行网络登录以作为来宾进行身份验证”策略,则函数将失败。 请注意,如果计算机已加入工作组,则默认启用此策略。
如果当前用户没有对远程计算机的适当访问权限,则对 RegConnectRegistry 的调用将失败。 若要连接到远程注册表,请在调用RegConnectRegistry 之前使用 LOGON32_LOGON_NEW_CREDENTIALS 和 ImpersonateLoggedOnUser 调用 LogonUser。
Windows 2000: 一种可能的解决方法是使用一组不同的凭据与管理共享(例如 IPC$)建立会话。 若要指定当前用户以外的凭据,请使用 WNetAddConnection2 函数连接到共享。 访问完注册表后,请取消连接。
Windows XP 家庭版: 不能使用此函数连接到运行 Windows XP 家庭版的远程计算机。 此函数确实适用于本地计算机的名称,即使它运行的是 Windows XP 家庭版,因为这会绕过身份验证层。
注意
winreg.h 标头将 RegConnectRegistry 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | winreg.h (包括 Windows.h) |
Library | Advapi32.lib |
DLL | Advapi32.dll |