ActiveDirectoryのプロパティにページを追加する方法

前回からの続き

ActiveDirectoryのプロパティにページを差し込む方法がわかったので説明します。

ページは COM コンポーネントになっていて追加するには、専用のプログラムを作成しないといけません。。。
超面倒です。多様性を持たせるにはコレしかなかったのか、、、

サンプルプログラムをビルドする。

サンプルは、Microsoft SDKの中にありました。場所はここです。

C:\Program Files\Microsoft Platform SDK\Samples\NetDS\ADSI\samples\DSUI\userext\userproppage

VC6 でもビルドできますが、 mfc42ud.dll がないとか言われたら、こちらを参考にインストールしてください。

LINK : fatal error LNK1104: ファイル "mfc42ud.lib" を開けません。

http://up-beat.pos.to/linux/cdiary.cgi?year=2005&mon=5&no=7

また、最新のSDKを入れていると、なってデバッグビルドが失敗します。

adsiid.lib(guid.obj) : fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください

とりあえず、リリースビルドは動くのでwww これでいいことにしておきますwww

リリースビルドできましたか?
リリースビルドが成功すると、以下のディレクトリに、userproppage.dll ってファイルができます。

C:\Program Files\Microsoft Platform SDK\Samples\NetDS\ADSI\samples\DSUI\userext\userproppage\ReleaseU

このdllを windows 2003 server のテスト機にコピーしましょう。

COM登録

COMなので、regsvr32 で登録します。
この例だと、userproppage.dll を c:\ にコピーしました。

regsvr32 c:\userproppage.dll

遊び終わった後の登録解除はこんな感じです。

regsvr32 /u c:\userproppage.dll


AD登録への前準備

実は、これだけだと何にも変わりません。。。
ADの display specifier ってヤツに登録しないと呼び出されないようです。

登録する方法はいろいろあるみたいですが、 ADSI EDIT で登録してみます。

で、問題なのが、普通は ADSI EDIT なんてインストールしていないことです。
こいつは、windows 2003 server のインストールCDの中に入っているので、windows 2003 server の CD からインストールします。
#ネットから落とせればどんなに楽なことか。

CD-ROMの以下のフォルダに移動し SUPTOOLS.MSI を実行しインストールします

D:\SUPPORT\TOOLS

フルパスだと↓な感じ。コピペ用
D:\SUPPORT\TOOLS\SUPTOOLS.MSI

画面の流れに従ってインストールします。



インストールが終わったら、コマンドプロンプトで、呼び出してみます。

adsiedit.msc

起動しましたか?

ADSI EDITによるプロパティ画面の登録。

この項目は以下のサイトを参考にしています。
http://www.moe.am/index.php/2009/03/pictures-in-active-directory-users-and-computers/

起動したら、 以下の階層に移動します

Configuration → 
CN=Configuration.DC=rtitest.DC=local →
CN=DisplaySpecifier →
CN=411

参考にしたサイトでは、 CN=409(英語)に登録していますが、今回は CN=411(日本語) に登録します。

CN=411 の階層の中にいろいろと並んでいますが、 CN=user-Display に移動します。
こいつをダブルクリックするとプロパティが開きます。

CN=user-Displayプロパティの adminPropertyPages をダブルクリック。

そうすると、こんな感じにいろいろ表示されるので、↓のように入れて、追加を押します。

10,{69D967C6-AB39-47b7-8F00-410185C80F89}


追加されたので、OKで閉じます。

たぶん表記は、こんな感じです。

<number>,{CLSID}

number はタブの並び準とかかなぁ。とりあえず空いている 10 番目を選択。

CLSID は、サンプルプログラムだと、userproppage.cpp の CLSID_ProppageUser でしょうか。

編集が終わったら、ADSI EDIT を終了して、ADの管理を立ち上げて、適当なユーさせのプロパティを見てみてます。

確認

うん?
なにやら上のタブの配置が変わったような。

キター!!!

無事ページが追加されました。

いやーうまくいきました、、、しかし値をたった一つ増やすだけで何でこんなに面倒なことをしないといけないんだろう。。。

あとは、サンプルを改造して、自分が好きな画面を差し込めば、ADを好きなようにカスタムすることができますね!