ADSIでドメインに接続するには

解決


さんぽ道  2009-06-03 22:16:21  No: 70264  IP: [192.*.*.*]

ADSIを利用して、接続を試みたのですが
下記記述だと失敗してしまいます。
どこがまちがっているのでしょうか?


  CComBSTR strcon("LDAP://test.com");

  IADsContainer*  contain;
  HRESULT  resu = ADsGetObject(strcon, IID_IADsContainer,(LPVOID*) &contain);
  if (FAILED(resu)) {
    printf("ログインに失敗  ==[%s]\n",strcon);
  }

サーバ名は「testuse」で、ドメインが[test.com]です。
上記のロジックを実行すると、
「ログインに失敗  ==[L]」と出力されています。

開発環境は、Visual C++6.0になります。
お願いします。

編集 削除
aetos  2009-06-04 02:51:52  No: 70265  IP: [192.*.*.*]

resu には何が返ってきているんですか?

ここ以下に書いてあるいずれかのコードが返ってきていますか?
http://msdn.microsoft.com/en-us/library/aa772195.aspx

編集 削除
さんぽ道  2009-06-04 14:16:38  No: 70266  IP: [192.*.*.*]

resuには
800401e4が返却されてきました。
(インストールされてあり、OUの登録もユーザの登録もできているので
インストールエラーではないような気がするのですが...)

http://support.microsoft.com/kb/289891

ちなみにデバックは、以下のロジックにて排出しました。

  wprintf(L"An error occurred.\n  HRESULT: %x\n",hr);
    if (HRESULT_FACILITY(hr)==FACILITY_WIN32)
    {
        DWORD dwLastError;
        WCHAR szErrorBuf[MAX_PATH];
        WCHAR szNameBuf[MAX_PATH];
    
    HRESULT hr_return =S_OK;
        hr_return = ADsGetLastError( &dwLastError,
                                       szErrorBuf,
                                       MAX_PATH,
                                       szNameBuf,
                                       MAX_PATH);
  if (SUCCEEDED(hr_return))
    {
      wprintf(L"Error Code: %d\n Error Text: %ws\n Provider: %ws\n", dwLastError, szErrorBuf, szNameBuf);
    }
  }

編集 削除
aetos  2009-06-04 14:34:03  No: 70267  IP: [192.*.*.*]

これが原因かなー?
http://support.microsoft.com/kb/171724/ja

コンソールアプリなら、main の最初に CoInitialize、最後に CoUninitialize を呼んでみてください。

編集 削除
さんぽ道  2009-06-04 14:44:25  No: 70268  IP: [192.*.*.*]

おお!
そうかも知れません。

やっていなかったので、コーディングして
試してみますッ!!

編集 削除
さんぽ道  2009-06-04 14:48:52  No: 70269  IP: [192.*.*.*]

解決できました!
ありがとうございます!

編集 削除
さんぽ道  2009-06-04 14:49:22  No: 70270  IP: [192.*.*.*]

解決できました!
ありがとうございます!

編集 削除