NetRequestOfflineDomainJoin 函数 (lmjoin.h)

NetRequestOfflineDomainJoin 函数在计算机上本地执行,以修改卷上装载的 Windows 操作系统映像。 注册表从映像加载,预配 Blob 数据写入,可在脱机域加入操作的完成阶段检索到该数据。

语法

NET_API_STATUS NET_API_FUNCTION NetRequestOfflineDomainJoin(
  [in] BYTE    *pProvisionBinData,
  [in] DWORD   cbProvisionBinDataSize,
  [in] DWORD   dwOptions,
  [in] LPCWSTR lpWindowsPath
);

parameters

[in] pProvisionBinData

指向初始化 Windows 操作系统映像注册表以在脱机域加入操作完成阶段处理最终本地状态更改所需的缓冲区的指针。

NetProvisionComputerAccount 函数返回 pProvisionBinData 参数中传递的序列化元数据的不透明二进制 Blob。

[in] cbProvisionBinDataSize

pProvisionBinData 参数指向的缓冲区的大小(以字节为单位)。

此参数不得为 NULL

[in] dwOptions

一组位标志,用于定义此函数的选项。 此参数可以是 Lmjoin.h 头文件中定义的以下一个或多个值。

含义
NETSETUP_PROVISION_ONLINE_CALLER
0x40000000
如果 lpWindowsPath 参数引用当前运行的 Windows 操作系统目录,而不是装载在可访问卷上的脱机 Windows 操作系统映像,则此标志是必需的。 如果指定了此标志,则 NetRequestOfflineDomainJoin 函数必须由本地 Administrators 组的成员调用。

[in] lpWindowsPath

指向以 null 结尾的常量字符串的指针,该字符串指定注册表配置单元所在的 Windows 操作系统映像的路径。 此映像必须处于脱机状态,并且当前未启动,除非 dwOptions 参数包含 NETSETUP_PROVISION_ONLINE_CALLER 在这种情况下,允许本地运行的操作系统目录。

此路径可以是远程服务器上的 UNC 路径。

返回值

如果函数成功,则返回值NERR_Success。

如果函数失败,则返回值可以是以下错误代码之一或 系统错误代码之一。

返回代码 说明
ERROR_ACCESS_DENIED
拒绝访问。 如果调用方没有足够的权限来完成操作,则返回此错误。
ERROR_ELEVATION_REQUIRED
请求的操作需要进行提升。
ERROR_INVALID_PARAMETER
参数不正确。 如果 pProvisionBinDatacbProvisionBinDataSizelpWindowsPath 参数为 NULL,则返回此错误。 如果 pProvisionBinData 参数指向的缓冲区在 blob 中不包含域、计算机帐户名称或计算机帐户密码的有效数据,则也会返回此错误。 如果指向 lpWindowsPath 参数的字符串未指定 Windows 操作系统映像的路径,也会返回此错误。
ERROR_NOT_SUPPORTED
不支持该请求。 如果指定的服务器不支持此操作,则返回此错误。 例如,如果 lpWindowsPath 参数引用配置为域控制器的 Windows 安装。
NERR_WkstaNotStarted
工作站服务尚未启动。

注解

Windows 7 支持 NetRequestOfflineDomainJoin 函数进行脱机域加入操作。

NetRequestOfflineDomainJoin 函数在计算机上本地用于修改装载在卷上的 Windows 操作系统映像。 为映像加载注册表,并写入预配 Blob 数据,可在脱机域加入操作的完成阶段检索该数据。 脱机域加入方案使用以下函数,如下所示:

  • NetProvisionComputerAccount 是一个预配函数,首先调用它来执行在 Active Directory 中创建和配置计算机对象所需的网络操作。 NetProvisionComputerAccount 的输出是用于下一步的序列化元数据的不透明二进制 Blob。
  • 然后调用 NetRequestOfflineDomainJoin(映像初始化函数)将 NetProvisionComputerAccount 预配函数的输出注入到 Windows 操作系统映像中,以在安装期间使用。 对 Windows 初始化代码的更改将检测此保存的状态,并影响域加入的本地部分。

NetProvisionComputerAccount 函数将在域中创建或重复使用计算机帐户,收集所有必要的元数据,并在不透明的版本控制二进制 Blob 中返回它,或作为文本将其嵌入无人参与安装应答文件中。 脱机域加入请求操作可以使用不透明的二进制 Blob,该操作提供在首次启动期间完成域加入所需的全部输入,而无需任何网络操作 (本地状态更新) 。 请注意,Blob 包含计算机帐户密码材料,实质上是明文的。 该设计不对保护此数据作出任何规定。 目前,无人参与安装答案文件存在此问题,这些文件可能携带大量机密,包括域用户密码。 调用方必须保护 Blob 和无人参与安装文件。 此问题的解决方案各不相同。 例如,预交换的密钥可用于加密使用者和预配实体之间的会话,从而启用不透明 Blob 的安全传输。

NetProvisionComputerAccount 函数在 pProvisionBinData 参数中返回的不透明 Blob 进行了版本控制,以允许不同版本的 Windows (联接客户端、预配计算机和域控制器) 之间的互操作性和可维护性方案。 脱机联接方案目前不限制 NetProvisionComputerAccount 函数返回的 Blob 的生存期。

有关脱机域加入操作的详细信息,请参阅 脱机域加入分步指南

要求

   
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 无受支持的版本
目标平台 Windows
标头 lmjoin.h (包括 Lm.h)
Library Netapi32.lib
DLL Netapi32.dll

另请参阅

NetCreateProvisioningPackage

NetJoinDomain

NetProvisionComputerAccount

NetRenameMachineInDomain

NetRequestProvisioningPackageInstall

NetUnjoinDomain

网络管理功能

网络管理概述

脱机域加入分步指南