Windows NT ユーザ一覧

  ADSI Objects of WinNT



  
#include <stdio.h>
#include <comdef.h>
#include <activeds.h>
// CComBSTR
#include <atlbase.h>

#pragma comment( lib, "adsiid.lib" )
#pragma comment( lib, "activeds.lib" )

// *********************************************
// 実行
// *********************************************
int main()
{
	_bstr_t bstrServer("WinNT://");
	bstrServer.operator += ("server");
	_bstr_t bstrUser("user");
	_bstr_t bstrPassword("password");

	HRESULT hr;

	CoInitialize( NULL );

	// コンテナオブジェクトの取得
	IADsContainer *pContainer;

	hr = ADsOpenObject(
		(wchar_t *)bstrServer,
		(wchar_t *)bstrUser,
		(wchar_t *)bstrPassword,
		0x1,
		IID_IADsContainer,
		(LPVOID*)&pContainer
	);
	if( FAILED( hr ) ) {
		return 0;
	}

	// コンテナオブジェクトにユーザ用のフィルタを設定
	VARIANT varFilter;
	LPWSTR pszTarget = L"user";

	hr = ADsBuildVarArrayStr(
		&pszTarget,
		1,
		&varFilter
	);
	if( FAILED( hr ) ) {
		pContainer->Release();
		return 0;
	}

	hr = pContainer->put_Filter( varFilter );
	if( FAILED( hr ) ) {
		pContainer->Release();
		VariantClear( &varFilter );
		return 0;
	}

	// 列挙オブジェクトの取得
	IEnumVARIANT *pIEnumVARIANT;
	hr = ADsBuildEnumerator(
		pContainer,
		&pIEnumVARIANT
	);
	if( FAILED( hr ) ) {
		pContainer->Release();
		VariantClear( &varFilter );
		return 0;
	}

	VARIANT varEnum;
	ULONG pcElementsFetched;
	IADsUser *pADs;
	CComBSTR bstrTarget;

	// コンテナ内のオブジェクト一覧
	while( 1 ) {
		hr = ADsEnumerateNext(
			pIEnumVARIANT,
			1,
			&varEnum,
			&pcElementsFetched
		);
		if( FAILED( hr ) ) {
			break;;
		}
		if ( pcElementsFetched == 0 ) {
			break;
		}

		hr = ((&varEnum)->pdispVal)->QueryInterface(
			IID_IADs,
			(LPVOID*)&pADs
		);
		if( FAILED( hr ) ) {
			break;
		}

		pADs->get_Name( &bstrTarget );
		printf( "%S : ", bstrTarget.m_str );
		bstrTarget.Empty();

		pADs->get_ADsPath( &bstrTarget );
		printf( "%S \n", bstrTarget.m_str );
		bstrTarget.Empty();

		pADs->Release();
		VariantClear( &varEnum );

	}

	// 列挙オブジェクトの解放
	ADsFreeEnumerator( pIEnumVARIANT );
	// コンテナオブジェクトの解放
	pContainer->Release();
	// フィルター
	VariantClear( &varFilter );

	CoUninitialize();

	return 0;
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加




SQLの窓  天気  IT用語辞典
Yahoo!ニュース  マルチ辞書
PHP マニュアル  Google URL短縮 


フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ