<%@ Language=VBScript %> KYO'S ROOM 【ADSI】


WinNT プロバイダを使用したユーザー情報の取得

ユーザー名とドメイン名、またはコンピュータ名を入れると、WinNT プロバイダで取得できる ADSI オブジェクト、User オブジェクトの一覧を表示することができます。コンピュータ名を入れた場合、そのコンピュータのローカルユーザーを表示します。

ユーザー名を入力してください。

ex) kyo

ドメイン名、またはコンピュータ名を入力してください。

ex) kyodom

 

スクリプト解説

上記サンプル内で使用しているスクリプトの一部を以下に解説します。

 

on error resume next
dname = Request.Form("domainname")
uname = Request.Form("username") 

' エラーが出たときのためのトラップ
' ASP を使用した情報の取得
 
Dim UserObj
if uname <> "" and dname <> "" then
  Set UserObj = GetObject("WinNT://" & dname & "/" & uname)
end if
' WinNT を使用して User オブジェクトを取得。上記例の場合
' WinNT://kyodom/kyo
' を検索している
 :
 :
Response.Write(UserObj.FullName) ' 取得した User オブジェクトからフルネームを取得

 

ポイントは、GetObject を使用して WinNT プロバイダを使用した ADsPath の構文を知っていれば大丈夫です。後は、取得したオブジェクトのプロパティを Object.Property と指定して上げればよいだけです。

ユーザー名(uname)にコンピュータ名を指定すれば、Computer オブジェクトが取得できるし、グループを指定すればグループが取得できます。ためしに、上記サンプルでユーザー名の変わりにコンピュータ名を入力すると、コンピュータの情報が取得できます。もちろん、オブジェクトが違うのでプロパティも違い、表示はされません。ただし、ADSI オブジェクトはすべてのオブジェクトが継承しているので、表示は可能です。

 

参考資料

WinNT Object Class Hierarchy
http://msdn.microsoft.com/library/psdk/adsi/ds2pnt4_762h.htm

WinNT Schema's Mandatory and Optional Properties
http://msdn.microsoft.com/library/psdk/adsi/ds2pnt4_49mb.htm

Modifying User Properties
http://msdn.microsoft.com/library/psdk/adsi/adsiscript_66ur.htm

ADS_USER_FLAG_ENUM
http://msdn.microsoft.com/library/psdk/adsi/ds2_enum_ret_94j1.htm

ADSI WinNT Provider
http://msdn.microsoft.com/library/psdk/adsi/ds2pnt4_7diq.htm