Hatena::ブログ(Diary)

お前の血は何色だ!! 4 このページをアンテナに追加 RSSフィード Twitter

2009-10-27

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

前回からの続き

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

ページは COM コンポーネントになっていて追加するには、専用のプログラムを作成しないといけません。。。

超面倒です。多様性を持たせるにはコレしかなかったのか、、、

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

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

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

f:id:rti7743:20091027091443p:image

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

f:id:rti7743:20091027091442p:image

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

COM登録

COMなので、regsvr32 で登録します。

この例だと、userproppage.dll を c:\ にコピーしました。

regsvr32 c:\userproppage.dll

f:id:rti7743:20091027091441p:image

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

regsvr32 /u c:\userproppage.dll

f:id:rti7743:20091027091440p:image

AD登録への前準備

実は、これだけだと何にも変わりません。。。

ADの display specifier ってヤツに登録しないと呼び出されないようです。

f:id:rti7743:20091027091658p:image

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

で、問題なのが、普通は ADSI EDIT なんてインストールしていないことです。

こいつは、windows 2003 server のインストールCDの中に入っているので、windows 2003 server の CD からインストールします。

#ネットから落とせればどんなに楽なことか。

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

D:\SUPPORT\TOOLS

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

f:id:rti7743:20091027091439p:image

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

f:id:rti7743:20091027091438p:image

f:id:rti7743:20091027091437p:image

f:id:rti7743:20091027091436p:image

f:id:rti7743:20091027091435p:image

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

adsiedit.msc

f:id:rti7743:20091027091427p:image

起動しましたか?

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(日本語) に登録します。

f:id:rti7743:20091027091817p:image

CN=411 の階層の中にいろいろと並んでいますが、 CN=user-Display に移動します。

こいつをダブルクリックするとプロパティが開きます。

f:id:rti7743:20091027091816p:image

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

f:id:rti7743:20091027091815p:image

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

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

f:id:rti7743:20091027091814p:image

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

f:id:rti7743:20091027091813p:image

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

<number>,{CLSID}

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

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

f:id:rti7743:20091027091812p:image

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

確認

うん?

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

f:id:rti7743:20091027091811p:image

キター!!!

f:id:rti7743:20091027091810p:image

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

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

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

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証