NetCreateProvisioningPackage 関数 (lmjoin.h)
NetCreateProvisioningPackage 関数は、後でオフライン ドメイン参加操作で使用するためにコンピューター アカウントをプロビジョニングするプロビジョニング パッケージを作成します。 パッケージには、プロビジョニング中にマシンに追加する証明書とポリシーに関する情報が含まれている場合もあります。
構文
NET_API_STATUS NET_API_FUNCTION NetCreateProvisioningPackage(
[in] PNETSETUP_PROVISIONING_PARAMS pProvisioningParams,
[out, optional] PBYTE *ppPackageBinData,
[out, optional] DWORD *pdwPackageBinDataSize,
[out, optional] LPWSTR *ppPackageTextData
);
パラメーター
[in] pProvisioningParams
プロビジョニング パッケージに関する情報を含む NETSETUP_PROVISIONING_PARAMS 構造体へのポインター。
この構造体のメンバーには、次の値が定義されています。
値 | 意味 |
---|---|
|
プロビジョニング パッケージ内の Windows のバージョン。 このメンバーは、 Lmjoin.h ヘッダー ファイルで定義されている次の値を使用する必要があります。 NETSETUP_PROVISIONING_PARAMS_CURRENT_VERSION (0x00000001) |
|
コンピューター アカウントが作成されるドメインの名前を指定する、null で終わる定数文字列へのポインター。 |
|
コンピューター アカウント属性 sAMAccountName の派生元となるコンピューターの短い名前を指定する、null で終わる定数文字列へのポインター。'$' を追加します。 このパラメーターには、有効な DNS または NetBIOS コンピューター名を含める必要があります。 |
|
コンピューター アカウントが作成される組織単位 (OU) の RFC 1779 形式名を含む、null で終わる定数文字列への省略可能なポインター。 このパラメーターを指定する場合、文字列には、OU=testOU,DC=domain,DC=Domain,DC=com などの完全なパスが含まれている必要があります。 それ以外の場合、このパラメーターは NULL である必要があります。
このパラメーターが NULL の場合は、既知のコンピューター オブジェクト コンテナーがドメインで発行されたものとして使用されます。 |
|
ターゲットとするドメイン コントローラーの名前を含む、null で終わる定数文字列への省略可能なポインター。 |
|
プロビジョニング オプションを定義するビット フラグのセット。 このパラメーターには、NetProvisionComputerAccount 関数に渡される dwOptions パラメーターに指定された値を 1 つ以上指定できます。
これらの可能な値は、 Lmjoin.h ヘッダー ファイルで定義されます。 NETSETUP_PROVISION_ROOT_CA_CERTS オプションは、Windows 8とWindows Server 2012でのみサポートされます。 |
|
NULL で終わる証明書テンプレート名の配列への省略可能なポインター。 |
|
aCertTemplateNames が NULL でない場合、このメンバーは配列内の項目数の明示的なカウントを提供します。 |
|
NULL で終わるコンピューター ポリシー名の配列への省略可能なポインター。 |
|
aMachinePolicyNames が NULL でない場合、このメンバーは配列内の項目数の明示的なカウントを提供します。 |
|
文字列の配列への省略可能なポインター。 各配列要素は、レジストリ ポリシー ファイル形式のファイルへの完全パスまたは部分パスを指定する NULL で終わる文字列です。 レジストリ ポリシー ファイル形式の詳細については、「レジストリ ポリシー ファイル形式」を参照してください。
パスには、リモート サーバー上の UNC パスを指定できます。 |
|
aMachinePolicyPaths が NULL でない場合、このメンバーは配列内の項目数の明示的なカウントを提供します。 |
[out, optional] ppPackageBinData
NetProvisionComputerAccount 関数が正常に完了した場合に、オフライン ドメイン参加を完了するために NetRequestOfflineDomainJoin 関数に必要なパッケージを受け取る省略可能なポインター。 データは、 NetRequestOfflineDomainJoin 関数に渡される可能性がある不透明なバイナリ バッファーとして返されます。
このパラメーターが NULL の場合、 pPackageTextData パラメーターは NULL にすることはできません。 このパラメーターが NULL でない場合、 pPackageTextData パラメーターは NULL である必要があります。
[out, optional] pdwPackageBinDataSize
pProvisionBinData パラメーターで返されるバッファーのサイズをバイト単位で受け取る値へのポインター。
pPackageBinData パラメーターが NULL でない場合は、このパラメーターを NULL にすることはできません。 pPackageBinData パラメーターが NULL の場合、このパラメーターは NULL である必要があります。
[out, optional] ppPackageTextData
NetProvisionComputerAccount 関数が正常に完了した場合に、オフライン ドメイン参加を完了するために NetRequestOfflineDomainJoin 関数に必要なパッケージを受け取る省略可能なポインター。 無人セットアップ応答ファイルに埋め込む場合、データは文字列形式で返されます。
このパラメーターが NULL の場合、 pPackageBinData パラメーターは NULL にすることはできません。 このパラメーターが NULL でない場合、 pPackageBinData パラメーターは NULL である必要があります。
戻り値
関数が成功した場合、戻り値はNERR_Success。
関数が失敗した場合、戻り値には、次のいずれかのエラー コードまたは システム エラー コードのいずれかを指定できます。
リターン コード | 説明 |
---|---|
|
アクセスが拒否されました。 呼び出し元に操作を完了するための十分な特権がない場合、このエラーが返されます。 |
|
この操作は、ドメインのプライマリ ドメイン コントローラーに対してのみ許可されます。 このエラーは、pProvisioningParams パラメーターが指すNETSETUP_PROVISIONING_PARAMS構造体の lpDcName にドメイン コントローラー名が指定されているが、指定されたコンピューターが、NETSETUP_PROVISIONING_PARAMSの lpDomain で指定されたターゲット ドメインのドメイン コントローラーとして検証できなかった場合に返されます。 |
|
パラメーターが正しくありません。 このエラーは、 両方の pProvisioningParams パラメーターが NULL の場合にも返されます。 このエラーは、pProvisioningParams パラメーターが指すNETSETUP_PROVISIONING_PARAMS構造体の lpDomain または lpMachineName メンバーが NULL の場合にも返されます。 |
|
指定されたドメインが存在しませんでした。 |
|
要求はサポートされていません。 このエラーは、pProvisioningParams パラメーターが指すNETSETUP_PROVISIONING_PARAMS構造体で lpMachineAccountOU メンバーが指定されており、ドメイン コントローラーがこのパラメーターをサポートしていない以前のバージョンの Windows で実行されている場合に返されます。 |
|
指定したドメイン コントローラーがこの操作のバージョン要件を満たしていません。 |
|
この操作には、LDAP をサポートするドメイン コントローラーが必要です。 |
|
アカウントはドメインに既に存在し、pProvisioningParams パラメーターが指すNETSETUP_PROVISIONING_PARAMS構造体の dwProvisionOptions メンバーにNETSETUP_PROVISION_REUSE_ACCOUNT ビットが指定されていません。 |
|
ワークステーション サービスが開始されていません。 |
|
このスレッドでリモート プロシージャ コールが既に進行中です。 |
|
リモート プロシージャ コール プロトコル シーケンスはサポートされていません。 |
注釈
NetCreateProvisioningPackage 関数は、オフライン結合操作のWindows 8とWindows Server 2012でサポートされています。 Windows 7 の場合は、 NetProvisionComputerAccount 関数を 使用します。
NetCreateProvisioningPackage 関数は、NetRequestProvisioningPackageInstall 関数を使用して、オフライン ドメイン参加操作で後で使用するためにコンピューター アカウントをプロビジョニングするために使用されます。
オフライン ドメイン参加シナリオでは、次の 2 つの関数を使用します。
- NetCreateProvisioningPackage は、Active Directory でコンピューター オブジェクトを作成および構成するために必要なネットワーク操作を実行するために最初に呼び出されるプロビジョニング関数です。 NetCreateProvisioningPackage からの出力は、次の手順で使用されるパッケージです。
- イメージ初期化関数である NetRequestProvisioningPackageInstall が呼び出され、インストール前とインストール後に使用するために、NetCreateProvisioningPackage プロビジョニング関数からの出力が Windows オペレーティング システム イメージに挿入されます。
pPackageBinData ポインターと pdwPackageBinDataSize out ポインターを使用する場合は、pPackageTextData out ポインターを NULL に設定します。 pPackageTextData を使用する場合は、pPackageBinData ポインターと pdwPackageBinDataSize out ポインターを NULL に設定します。
pProvisioningParams パラメーターは、プロビジョニング パッケージに含めるデータを指定します。 パッケージには、ドメイン参加に関連する情報が含まれており、コンピューターにインストールするポリシーと証明書に関する情報を含めることもできます。 プロビジョニング パッケージは、次の 4 つの方法で使用できます。
- ドメイン参加
- 証明書のドメイン参加とインストール
- ドメイン参加とポリシーのインストール
- 証明書とポリシーのドメイン参加とインストール
NetCreateProvisioningPackage 関数は、ドメイン内のマシン アカウントを作成または再利用し、必要なすべてのメタデータを収集してパッケージで返します。 パッケージは、オフライン ドメイン参加要求操作で使用できます。この操作では、ネットワーク操作なしで最初のブート中にドメイン参加を完了するために必要なすべての入力を指定できます (ローカル状態の更新のみ)。
セキュリティに関する注意: NetCreateProvisioningPackage 関数によって返されるパッケージには、非常に機密性の高いデータが含まれています。 プレーンテキスト パスワードと同じように安全に扱う必要があります。 パッケージには、コンピューター アカウントのパスワードと、ドメイン名、ドメイン コントローラーの名前、ドメインのセキュリティ ID (SID) など、ドメインに関するその他の情報が含まれています。 パッケージが物理的またはネットワーク経由で転送されている場合は、安全に転送するように注意する必要があります。 この設計では、このデータをセキュリティで保護するためのプロビジョニングは行われません。 この問題は現在、ドメイン ユーザー パスワードを含む多くのシークレットを保持できる無人セットアップ応答ファイルに存在します。 呼び出し元はパッケージをセキュリティで保護する必要があります。 この問題の解決策はさまざまです。 たとえば、事前に交換されたキーを使用して、コンシューマーとプロビジョニング エンティティの間のセッションを暗号化し、パッケージの安全な転送を可能にすることができます。
NetCreateProvisioningPackage 関数によって pPackageBinData パラメーターで返されるパッケージは、さまざまなバージョンの Windows (クライアントへの参加、マシンのプロビジョニング、ドメイン コントローラーの使用など) 間の相互運用性とサービス性のシナリオを可能にするためにバージョン管理されています。 Windows 8またはWindows Server 2012で作成されたパッケージは、Windows 7 または Windows Server 2008 R2 を使用できますが、ドメイン参加情報のみが有効になります (証明書とポリシーはサポートされていません)。 現在、オフライン結合シナリオでは、 NetCreateProvisioningPackage 関数によって返されるパッケージの有効期間は制限されていません。
オフライン ドメイン参加の場合、実行チェックアクセスはドメインの構成によって異なります。 コンピューター アカウントの作成は、次の 3 つの方法を使用して有効になります。
- ドメイン管理者には、コンピューター アカウントを作成する権限があります。
- コンテナー上の SD は、コンピューター アカウントを作成する権限を委任できます。
- 既定では、認証されたユーザーは特権によってコンピューター アカウントを作成できます。 認証されたユーザーは、ドメインのクォータとして指定されたアカウントの数に制限されます (既定値は 10)。 詳細については、Active Directory スキーマの ms-DS-MachineAccountQuota 属性を参照してください。
NetCreateProvisioningPackage 関数は、書き込み可能なドメイン コントローラーでのみ機能し、読み取り専用ドメイン コントローラーに対して機能しません。 書き込み可能なドメイン コントローラーに対してプロビジョニングが行われ、アカウントが読み取り専用ドメイン コントローラーにレプリケートされると、オフライン ドメイン参加操作の他の部分ではドメイン コントローラーへのアクセスは必要ありません。
NetCreateProvisioningPackage 関数が成功した場合、pPackageBinData パラメーターまたは pPackageTextData パラメーター (NULL ではないパラメーターに応じて) のポインターが、シリアル化されたデータと共に返され、オフライン結合操作で使用するか、無人セットアップ ファイル内のテキストとして使用されます。
プロビジョニング プロセスのすべてのフェーズは、ローカル コンピューター上の NetSetup.log ファイルに追加されます。 プロビジョニング プロセスには、プロビジョニング パッケージが作成されるコンピューター、パッケージのインストールを要求するコンピューター、パッケージがインストールされているコンピューターの 3 つの異なるコンピューターを含めることができます。 実行 NetSetup.log操作 に従って、3 台のコンピューターすべてにファイル情報が格納されます。 これらのファイルの内容を確認することは、オンラインとオフラインのプロビジョニング エラーをトラブルシューティングする最も一般的な方法です。 管理者が実行したプロビジョニング操作は、%WINDIR%\Debug のNetSetup.log ファイルに記録されます。 管理者以外が実行したプロビジョニング操作は、%USERPROFILE%\Debug フォルダー内のNetSetup.log ファイルに記録されます。
オフライン ドメイン参加操作の詳細については、「 オフライン ドメイン参加のステップ バイ ステップ ガイド」を参照してください。
NetJoinDomain と NetUnjoinDomain を使用したドメインへのコンピューターの参加 (および参加解除) は、ターゲット コンピューターの Administrators ローカル グループのメンバーによってのみ実行されます。 ドメイン管理者は、委任と特権の割り当てを使用してドメインに参加するための追加要件を設定できることに注意してください。
要件
サポートされている最小のクライアント | Windows 8 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2012 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | lmjoin.h (include Lm.h) |
Library | Netapi32.lib |
[DLL] | Netapi32.dll |