次の方法で共有


NetProvisionComputerAccount 関数 (lmjoin.h)

NetProvisionComputerAccount 関数は、後でオフライン ドメイン参加操作で使用するためにコンピューター アカウントをプロビジョニングします。

構文

NET_API_STATUS NET_API_FUNCTION NetProvisionComputerAccount(
  [in]            LPCWSTR lpDomain,
  [in]            LPCWSTR lpMachineName,
  [in, optional]  LPCWSTR lpMachineAccountOU,
  [in, optional]  LPCWSTR lpDcName,
  [in]            DWORD   dwOptions,
  [out, optional] PBYTE   *pProvisionBinData,
  [out, optional] DWORD   *pdwProvisionBinDataSize,
  [out, optional] LPWSTR  *pProvisionTextData
);

パラメーター

[in] lpDomain

コンピューター アカウントが作成されるドメインの名前を指定する NULL で終わる文字列へのポインター。

[in] lpMachineName

コンピューター アカウント属性 sAMAccountName が派生するコンピューターの短い名前を指定する NULL で終わる文字列へのポインター。'$' を追加します。 このパラメーターには、有効な DNS または NetBIOS コンピューター名を含める必要があります。

[in, optional] lpMachineAccountOU

コンピューター アカウントが作成される組織単位 (OU) の RFC 1779 形式名を含む NULL で終わる文字列への省略可能なポインター。 このパラメーターを指定する場合、文字列には、OU=testOU,DC=domain,DC=Domain,DC=com などの完全なパスが含まれている必要があります。 それ以外の場合、このパラメーターは NULL である必要があります。

このパラメーターが NULL の場合は、既知のコンピューター オブジェクト コンテナーがドメインで発行されたものとして使用されます。

[in, optional] lpDcName

ターゲットにするドメイン コントローラーの名前を含む NULL で終わる文字列への省略可能なポインター。

[in] dwOptions

プロビジョニング オプションを定義するビット フラグのセット。 このパラメーターには、 Lmjoin.h ヘッダー ファイルで定義されている次の値のうち 1 つ以上を指定できます。

意味
NETSETUP_PROVISION_DOWNLEVEL_PRIV_SUPPORT
0x00000001
呼び出し元に特権によるアカウントの作成が必要な場合、このオプションでは、以前のバージョンの Windows で実行されているドメイン コントローラーとの相互運用性を可能にするアカウント作成関数を使用して、失敗時に再試行が発生します。

ダウンレベル特権のサポートを使用する場合、 lpMachineAccountOU はサポートされません。

NETSETUP_PROVISION_REUSE_ACCOUNT
0x00000002
名前付きアカウントが既に存在する場合は、既存のアカウントを再利用しようとします。

このオプションでは、この操作に十分な資格情報 (ドメイン管理者またはオブジェクト所有者) が必要です。

NETSETUP_PROVISION_USE_DEFAULT_PASSWORD
0x00000004
既定のマシン アカウント パスワードを使用します。これは、コンピューター名を小文字で指定します。 これは主に、事前に作成されたアカウントで通常この既定のパスワードが使用されている、以前の安全でない結合モデルをサポートするためです。
メモ 可能であれば、アプリケーションではこのオプションの使用を避ける必要があります。 このオプションと、安全でない結合のNETSETUP_JOIN_UNSECUREに dwOptions を設定した NetJoinDomain 関数は、以前のバージョンの Windows でのみ使用する必要があります。
 
NETSETUP_PROVISION_SKIP_ACCOUNT_SEARCH
0x00000008
ドメイン内のドメイン コントローラーでアカウントを検索しないでください。 このオプションを使用すると操作が高速になりますが、呼び出し元が同じ名前のアカウントが最近作成されていないことが確実な場合にのみ使用する必要があります。

このオプションは、 lpDcName パラメーターが指定されている場合にのみ有効です。 前提条件が満たされると、このオプションを使用すると、バッチ処理などのシナリオに役立つプロビジョニングを高速化する必要があります。

NETSETUP_PROVISION_ROOT_CA_CERTS
0x00000010
このオプションは、ローカル コンピューター上のすべてのルート証明機関証明書を取得し、プロビジョニング パッケージの一部として証明書テンプレート名が指定されていない場合にプロビジョニング パッケージに追加します (pProvisioningParams パラメーターで NetCreateProvisioningPackage 関数に渡されるNETSETUP_PROVISIONING_PARAMS構造体の aCertTemplateNames メンバーが NULL です)。
メモこのフラグは、Windows 8、Windows Server 2012、以降の NetCreateProvisioningPackage 関数でのみサポートされます。
 

[out, optional] pProvisionBinData

NetProvisionComputerAccount 関数が正常に完了した場合に、オフライン ドメイン参加を完了するために NetRequestOfflineDomainJoin 関数で必要なシリアル化されたメタデータの不透明なバイナリ BLOB を受け取るオプションのポインター。 データは、 NetRequestOfflineDomainJoin 関数に渡される可能性がある不透明なバイナリ バッファーとして返されます。

このパラメーターが NULL の場合、 pProvisionTextData パラメーターを NULL にすることはできません。 このパラメーターが NULL でない場合、 pProvisionTextData パラメーターは NULL である必要があります。

[out, optional] pdwProvisionBinDataSize

pProvisionBinData パラメーターで返されるバッファーのサイズをバイト単位で受け取る値へのポインター。

pProvisionBinData パラメーターが NULL でない場合は、このパラメーターを NULL にすることはできません。 pProvisionBinData パラメーターが NULL の場合、このパラメーターは NULL である必要があります。

[out, optional] pProvisionTextData

NetProvisionComputerAccount 関数が正常に完了した場合に、オフライン ドメイン参加を完了するために NetRequestOfflineDomainJoin 関数で必要なシリアル化されたメタデータの不透明なバイナリ BLOB を受け取るオプションのポインター。 無人セットアップ応答ファイルに埋め込む場合、データは文字列形式で返されます。

このパラメーターが NULL の場合、 pProvisionBinData パラメーターは NULL にすることはできません。 このパラメーターが NULL でない場合、 pProvisionBinData パラメーターは NULL である必要があります。

戻り値

関数が成功した場合、戻り値はNERR_Success。

関数が失敗した場合、戻り値には、次のいずれかのエラー コードまたは システム エラー コードのいずれかを指定できます。

リターン コード 説明
ERROR_ACCESS_DENIED
アクセスが拒否されました。 呼び出し元に操作を完了するための十分な特権がない場合、このエラーが返されます。
ERROR_INVALID_DOMAIN_ROLE
この操作は、ドメインのプライマリ ドメイン コントローラーに対してのみ許可されます。 このエラーは、 lpDcName パラメーターにドメイン コントローラー名が指定されていても、指定されたコンピューターを lpDomain パラメーターで指定されたターゲット ドメインのドメイン コントローラーとして検証できなかった場合に返されます。
ERROR_INVALID_PARAMETER
パラメーターが正しくありません。 lpDomain または lpMachineName パラメーターが NULL の場合、このエラーが返されます。 このエラーは、pProvisionBinData パラメーターと pProvisionTextData パラメーターの両方が NULL の場合にも返されます。
ERROR_NO_SUCH_DOMAIN
指定されたドメインが存在しませんでした。
ERROR_NOT_SUPPORTED
要求はサポートされていません。 lpMachineAccountOU パラメーターが指定されていて、このパラメーターをサポートしていない以前のバージョンの Windows でドメイン コントローラーが実行されている場合、このエラーが返されます。
NERR_DS8DCRequired
指定したドメイン コントローラーがこの操作のバージョン要件を満たしていません。
NERR_LDAPCapableDCRequired
この操作には、LDAP をサポートするドメイン コントローラーが必要です。
NERR_UserExists
アカウントはドメインに既に存在し、 dwOptions パラメーターにNETSETUP_PROVISION_REUSE_ACCOUNT ビットが指定されていません。
NERR_WkstaNotStarted
ワークステーション サービスが開始されていません。
RPC_S_CALL_IN_PROGRESS
このスレッドでリモート プロシージャ コールが既に進行中です。
RPC_S_PROTSEQ_NOT_SUPPORTED
リモート プロシージャ コール プロトコル シーケンスはサポートされていません。

注釈

NetProvisionComputerAccount 関数は、オフライン参加操作で Windows 7 および Windows Server 2008 R2 でサポートされています。 Windows 8または Windows Server 2008 R2 では、NetProvisionComputerAccount 関数の代わりに NetCreateProvisioningPackage 関数を使用することをお勧めします。

NetProvisionComputerAccount 関数は、NetRequestOfflineDomainJoin 関数を使用して、オフライン ドメイン参加操作で後で使用するためにコンピューター アカウントをプロビジョニングするために使用されます。 オフライン ドメイン参加シナリオでは、次のようにこれらの関数を使用します。

  • NetProvisionComputerAccount は、Active Directory でコンピューター オブジェクトを作成および構成するために必要なネットワーク操作を実行するために最初に呼び出されるプロビジョニング関数です。 NetProvisionComputerAccount からの出力は、次の手順で使用されるシリアル化されたメタデータの不透明なバイナリ BLOB です。
  • その後、イメージ初期化関数である NetRequestOfflineDomainJoin が呼び出され、インストール時に使用される Windows オペレーティング システム イメージに NetProvisionComputerAccount プロビジョニング関数からの出力が挿入されます。
Windows 初期化コードを変更すると、この保存された状態が検出され、ドメイン参加のローカル部分のみに影響します。

NetProvisionComputerAccount 関数は、ドメイン内のマシン アカウントを作成または再利用し、必要なすべてのメタデータを収集し、不透明なバージョン管理されたバイナリ BLOB で返すか、無人セットアップ応答ファイルに埋め込むためのテキストとして返します。 不透明なバイナリ BLOB は、オフライン ドメイン参加要求操作によって使用でき、ネットワーク操作なしで最初の起動時にドメイン参加を完了するために必要なすべての入力を提供します (ローカル状態の更新のみ)。

セキュリティに関する注意: NetProvisionComputerAccount 関数によって返される BLOB には、非常に機密性の高いデータが含まれています。 プレーンテキスト パスワードと同じように安全に扱う必要があります。 BLOB には、コンピューター アカウントのパスワードと、ドメイン名、ドメイン コントローラーの名前、ドメインのセキュリティ ID (SID) など、ドメインに関するその他の情報が含まれます。 BLOB が物理的またはネットワーク経由で転送されている場合は、安全に転送するように注意する必要があります。 この設計では、このデータをセキュリティで保護するためのプロビジョニングは行われません。 この問題は現在、ドメイン ユーザー パスワードを含む多くのシークレットを保持できる無人セットアップ応答ファイルに存在します。 呼び出し元は、BLOB と無人セットアップ ファイルをセキュリティで保護する必要があります。 この問題の解決策はさまざまです。 たとえば、事前に交換されたキーを使用して、コンシューマーとプロビジョニング エンティティの間のセッションを暗号化し、不透明な BLOB の安全な転送を可能にすることができます。

NetProvisionComputerAccount 関数によって pProvisionBinData パラメーターで返される不透明な BLOB は、さまざまなバージョンの Windows (クライアント、プロビジョニング マシン、ドメイン コントローラーの結合) 間の相互運用性とサービス性のシナリオを可能にするためにバージョン管理されています。 現在、オフライン参加シナリオでは、 NetProvisionComputerAccount 関数によって返される BLOB の有効期間は制限されていません。

オフライン ドメイン参加の場合、実行チェックアクセスはドメインの構成によって異なります。 コンピューター アカウントの作成は、次の 3 つの方法を使用して有効になります。

  • ドメイン管理者には、コンピューター アカウントを作成する権限があります。
  • コンテナー上の SD は、コンピューター アカウントを作成する権限を委任できます。
  • 既定では、認証されたユーザーは特権によってコンピューター アカウントを作成できます。 認証されたユーザーは、ドメインのクォータとして指定されたアカウントの数に制限されます (既定値は 10)。 詳細については、Active Directory スキーマの ms-DS-MachineAccountQuota 属性を参照してください。

NetProvisionComputerAccount 関数は、書き込み可能なドメイン コントローラーでのみ機能し、読み取り専用ドメイン コントローラーに対して機能しません。 書き込み可能なドメイン コントローラーに対してプロビジョニングが行われ、アカウントが読み取り専用ドメイン コントローラーにレプリケートされると、オフライン ドメイン参加操作の他の部分ではドメイン コントローラーへのアクセスは必要ありません。

NetProvisionComputerAccount 関数が成功した場合、pProvisionBinData パラメーターまたは pProvisionTextData パラメーター内のポインター (パラメーターが NULL でなかったかどうかに応じて) が、オフライン結合操作で使用するか、無人セットアップ ファイルのテキストとしてシリアル化されたデータと共に返されます。

オフライン ドメイン参加操作の詳細については、「 オフライン ドメイン参加のステップ バイ ステップ ガイド」を参照してください。

NetJoinDomain と NetUnjoinDomain を使用したドメインへのコンピューターの参加 (および参加解除) は、ターゲット コンピューター上の Administrators ローカル グループのメンバーのみが実行できます。 ドメイン管理者は、委任と特権の割り当てを使用してドメインに参加するための追加要件を設定できることに注意してください。

要件

   
サポートされている最小のクライアント Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー lmjoin.h (include Lm.h)
Library Netapi32.lib
[DLL] Netapi32.dll

こちらもご覧ください

NetCreateProvisioningPackage

NetJoinDomain

NetRenameMachineInDomain

NetRequestOfflineDomainJoin

NetUnjoinDomain

ネットワーク管理機能

ネットワーク管理の概要

オフライン ドメイン参加のステップ バイ ステップ ガイド

ms-DS-MachineAccountQuota