- PR -

ADSIを用いてネットワーク上のActiveDirectoryからドメインユーザ情報を取得する方法

1
投稿者投稿内容
ゆらゆら
会議室デビュー日: 2006/05/11
投稿数: 8
投稿日時: 2006-05-11 10:18
はじめまして、ゆらゆらと申します。

さっそくご質問ですが、現在私は VisualBasic6.0 にてローカルPC(XP)からAD(Windows2003Server)に登録されているドメインユーザの情報を取得するツールを作成しようと試みております。

この会議室にもネット上にもADSIを用いてユーザ情報を取得するさまざまなサンプルがあり、それを参考に作業を進めていました。

例えば以下のようなサンプルコードで

Dim objContainer As IADsContainer
Dim objUser As IADsUser

' コンピュータと接続
Set objContainer = GetObject("WinNT://ローカルPCのコンピュータ名")
' 対象をユーザーオブジェクトに限定
objContainer.Filter = Array("User")
' 取得したユーザー一覧を表示
For Each objUser In objContainer
Debug.Print = objUser.Name
Next
' オブジェクトの解放
Set objUser = Nothing
Set objContainer = Nothing

とプログラムを書いて、ローカルPC上で実行した場合はローカルPCの登録ユーザ名を取得することに成功しました。ただ、Set objContainer = GetObject("WinNT://リモートPCのコンピュータ名")と変更し、ローカルPC上で実行してもGetObjectで指定したリモートPCに登録されているユーザ情報を取得できませんでした。

そもそもネットワーク越しにあるPCのユーザ情報はこの方法では取れないのか、単に書き方が間違っているのか、PCの設定がおかしいのは分からずに困っています。

もし、同じような件でご存知のかたがいらっしゃいましたら、ご教授ください。よろしくお願いします。


[ メッセージ編集済み 編集者: ゆらゆら 編集日時 2006-05-11 10:19 ]
ゆいたん
ベテラン
会議室デビュー日: 2004/08/26
投稿数: 91
投稿日時: 2006-05-11 11:59
こんにちは

ログオンしていないだけだと思います。

コード:

Dim objIADs As IADsOpenDSObject  '<-ここを追加
Dim objContainer As IADsContainer
Dim objUser As IADsUser

Set objIADs = GetObject("WinNT:")  '<-ここを追加
' コンピュータと接続
Set objContainer = objIADs.OpenDSObject("WinNT://computer", "computer\\\\administrator", "password", 1)  '<-ここを変更
' 対象をユーザーオブジェクトに限定
objContainer.Filter = Array("User")
' 取得したユーザー一覧を表示
For Each objUser In objContainer
    Debug.Print objUser.Name
Next
' オブジェクトの解放
Set objUser = Nothing
Set objContainer = Nothing

ゆらゆら
会議室デビュー日: 2006/05/11
投稿数: 8
投稿日時: 2006-05-11 12:42
ゆいたん様

ご返答ありがとうございます。まさにただログオンしていないだけでした。

早速、いただいたサンプルコードを使用して実行しましたら、無事にADのユーザリストを取得することができました。

本当にありがとうございました。これでようやくツール作成がスムーズに進みそうです。

[ メッセージ編集済み 編集者: ゆらゆら 編集日時 2006-05-11 13:07 ]
1

スキルアップ/キャリアアップ(JOB@IT)