Quantcast
Channel: わんくま同盟
Viewing all articles
Browse latest Browse all 994

ネイティブ ADSI オブジェクト

$
0
0

検索して取得したユーザの DirectoryEntry オブジェクトから姓と名を取得するには次のように書きます。

VB

Dim lastName = DirectCast(DirectoryEntry.Properties.Item("sn").Value, String)

Dim firstName = DirectCast(DirectoryEntry.Properties.Item("givenName").Value, String)

C#

var lastName = (string)DirectoryEntry.Properties["sn"].Value;

var firstName = (string)DirectoryEntry.Properties["givenName"].Value;

 

プロパティ名(属性名)が 姓は「sn」、名は「givenName」です。

ADSI(Active Directory Services Interfaces)を使うとネイティブなユーザ(IADsUser)オブジェクトとして扱えるので次のように書くことができます。

VB

Dim lastName = IADsUser.LastName

Dim firstName = IADsUser.FirstName

C#

var lastName = IADsUser.LastName;

var firstName = IADsUser.FirstName;

 

ADSI を使う場合は参照の追加で「COM」タブから「Active DS Type Library」を選びます。

どのように ADSI のオブジェクトを取得するかというと、DirectoryEntry.NativeObject プロパティ(Object 型)を IADsUser にキャストするだけです。

DirectoryEntry がグループなら IADsGroup に、コンピュータなら IADsComputer に、組織単位(OU)なら IADsOU に、プリンタなら IADsPrintQueue にキャストできます。

これらのインターフェイスの基本インターフェイスが IADs インターフェイスです。

 

サンプルアプリではWindowsアプリもWebアプリもユーザやグループの情報を画面に表示するので、コントロールにバインドできるようにライブラリ側にインターフェイスを定義し、それを実装したクラスを用意します。(別途書くかソースを公開します。)

また、扱う Directory オブジェクトの種類を表す列挙体「CategoryType」をライブラリ側の名前空間直下に定義します。

メンバは次の7つです。

User    'ユーザ

Group    'グループ

Computer    'コンピュータ

OrganizationalUnit    '組織単位(OU)

PrintQueue    'プリンタ

Volume    '共有フォルダ

ForeignSecurityPrincipal    '外部のセキュリティ プリンシパル


Viewing all articles
Browse latest Browse all 994

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>