次の方法で共有


ADsOpenObject 関数 (adshlp.h)

ADsOpenObject 関数は、明示的なユーザー名とパスワードの資格情報を使用して ADSI オブジェクトにバインドします。ADsOpenObjectIADsOpenDSObject のラッパー関数であり、IADsOpenDSObject::OpenDsObject メソッドと同等です。

構文

HRESULT ADsOpenObject(
  [in]  LPCWSTR lpszPathName,
  [in]  LPCWSTR lpszUserName,
  [in]  LPCWSTR lpszPassword,
  [in]  DWORD   dwReserved,
  [in]  REFIID  riid,
  [out] void    **ppObject
);

パラメーター

[in] lpszPathName

種類: LPCWSTR

ADSI オブジェクトの ADsPath を指定する null で終わる Unicode 文字列。 このパラメーターのバインド文字列の詳細とコード例については、 LDAP ADsPathWinNT ADsPath に関するページを参照してください。

[in] lpszUserName

種類: LPCWSTR

資格情報に使用するディレクトリ サービスに指定するユーザー名を指定する null で終わる Unicode 文字列。 あいまいさを避けるために、この文字列は常に "<domain\><user name>" の形式にする必要があります。 たとえば、DomainA と DomainB に信頼関係があり、両方のドメインに "user1" という名前のユーザーがいる場合、"user1" の検証に使用するドメイン ADsOpenObject を予測することはできません。

[in] lpszPassword

種類: LPCWSTR

資格情報に使用するディレクトリ サービスに指定するパスワードを指定する null で終わる Unicode 文字列。

[in] dwReserved

型: DWORD

バインディング オプションを定義するために使用されるプロバイダー固有の認証フラグ。 詳細については、「 ADS_AUTHENTICATION_ENUM」を参照してください。

[in] riid

種類: REFIID

このオブジェクトで要求されたインターフェイスのインターフェイス識別子。

[out] ppObject

型: VOID**

要求されたインターフェイスへのポインターへのポインター。

戻り値

種類: HRESULT

このメソッドは、次のような標準 の HRESULT 戻り値をサポートしています。

詳細については、「 ADSI エラー コード」を参照してください。

注釈

この関数は、ユーザーの資格情報を検証するためだけに使用しないでください。

C/C++ クライアントは、適切なディレクトリ サービスの資格情報として指定されたユーザー名とパスワードを使用して、 ADSOpenObject ヘルパー関数を呼び出して ADSI オブジェクトにバインドします。 lpszUsernamelpszPasswordNULL、ADS_SECURE_AUTHENTICATIONが設定されている場合、ADSI は呼び出し元スレッドのセキュリティ コンテキストを使用してオブジェクトにバインドします。これは、アプリケーションが実行されているユーザー アカウントのセキュリティ コンテキスト、または呼び出し元スレッドが偽装するクライアント ユーザー アカウントのセキュリティ コンテキストです。

ADsOpenObject 関数に渡される資格情報は、 にバインドされた特定のオブジェクトでのみ使用され、呼び出し元スレッドのセキュリティ コンテキストには影響しません。 つまり、次の例では、 ADsOpenObject の呼び出しでは 、ADsGetObject の呼び出しとは異なる資格情報が使用されます。

HRESULT hr;
IADs *padsRoot1;
IADs *padsRoot2;

hr = ADsOpenObject(L"LDAP://rootDSE",
    pwszUsername,
    pwszPassword,
    ADS_SECURE_AUTHENTICATION,
    IID_IADs,
    (LPVOID*)&padsRoot1);

hr = ADsGetObject(L"LDAP://rootDSE",
    IID_IADs,
    (LPVOID*)&padsRoot2);

WinNT: プロバイダーを操作するには、 lpszUsername を次のいずれかの文字列として渡します。

  • ユーザー アカウントの名前、つまり "jeffsmith" です。
  • Windows スタイルのユーザー名。つまり、"Fabrikam\jeffsmith" です。
Active Directory の LDAP プロバイダーを使用すると、 lpszUsername を次のいずれかの文字列として渡すことができます。
  • ユーザー アカウントの名前 ("jeffsmith" など)。 ユーザー名を単独で使用するには、dwReserved パラメーターで ADS_SECURE_AUTHENTICATION フラグのみを設定する必要があります。
  • 以前のバージョンの Windows からのユーザー パス ("Fabrikam\jeffsmith" など)。
  • "CN=Jeff Smith,OU=Sales,DC=Fabrikam,DC=Com" などの識別名。 DN を使用するには、 dwReserved パラメーターを 0 にするか、 ADS_USE_SSL フラグを含める必要があります。
  • "" などのjeffsmith@Fabrikam.comユーザー プリンシパル名 (UPN)。 UPN を使用するには、ターゲット ユーザー オブジェクトの userPrincipalName 属性に適切な UPN 値を割り当てます。
LDAP プロバイダーを使用して特定のディレクトリ要求が正常に完了するために Kerberos 認証が必要な場合、 lpszPathName バインド文字列では、"LDAP://CN=Jeff Smith,CN=admin,DC=Fabrikam,DC=com" などのサーバーレス ADsPath を使用するか、完全修飾 DNS サーバー名 ("LDAP://central3.corp.Fabrikam.com/CN=Jeff Smith、CN=admin,DC=Fabrikam,DC=com" フラット NETBIOS 名または短い DNS 名を使用してサーバーにバインドします。たとえば、"central3.corp.Fabrikam.com" ではなく短い名前 "central3" を使用すると、Kerberos 認証が生成される場合と、生成されない場合があります。

次のコード例は、要求されたユーザー資格情報を使用してディレクトリ サービス オブジェクトにバインドする方法を示しています。

IADs *pObject;
LPWSTR szUsername = NULL;
LPWSTR szPassword = NULL
HRESULT hr;

// Insert code to securely retrieve the user name and password.

hr = ADsOpenObject(L"LDAP://CN=Jeff,DC=Fabrikam,DC=com",
                   "jeffsmith",
                   "etercespot",
                   ADS_SECURE_AUTHENTICATION, 
                   IID_IADs,
                   (void**) &pObject);

要件

要件
サポートされている最小のクライアント Windows Vista
サポートされている最小のサーバー Windows Server 2008
対象プラットフォーム Windows
ヘッダー adshlp.h
Library Activeds.lib
[DLL] Activeds.dll

こちらもご覧ください

ADSI エラー コード

ADSI 関数

ADsOpenObject と IADsOpenDSObject::OpenDsObject

Binding

IADsOpenDSObject

IADsOpenDSObject::OpenDsObject