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}
たぶん表記は、こんな感じです。
<number>,{CLSID}
number はタブの並び準とかかなぁ。とりあえず空いている 10 番目を選択。
CLSID は、サンプルプログラムだと、userproppage.cpp の CLSID_ProppageUser でしょうか。
編集が終わったら、ADSI EDIT を終了して、ADの管理を立ち上げて、適当なユーさせのプロパティを見てみてます。