Visual C++6.0によるADSIについて

解決


さんぽ道  2009-05-20 16:27:43  No: 70183  IP: [192.*.*.*]

標題にある開発言語にてADSIを勉強しています。
ADユーザの住所タブの各項目6項目について
セットしたいのですが、該当するメソッドがわからず
困っています。
MSDNをみたのですが、6項目全てが実装されておらず
悩んでいます。
住所タブの6項目
・国/地域
・郵便番号  →IADsUser::put_PostalCodes
・都道府県
・市区町村
・私書箱
・番地

もしくは、Visual C++6.0のADSIの参考本などご存知でしたら
情報いただけませんか?

お願い致します。

以上

編集 削除
オショウ  2009-05-20 16:43:47  No: 70184  IP: [192.*.*.*]

まず・・・

http://www.microsoft.com/japan/technet/scriptcenter/tools/admatic.mspx

ここや、検索したら・・・

http://touzokudan.blog31.fc2.com/blog-entry-6.html

こういうのがありますが、見られてます?

以上。

編集 削除
さんぽ道  2009-05-20 17:28:39  No: 70185  IP: [192.*.*.*]

返信ありがとうございます。

見ていませんでしたが、2段目のサイトの下記リンクだけは
みていました。
http://touzokudan.blog31.fc2.com/blog-date-200612.html

C++にいまだ初心者のため、WSHからのC++変換がわからない状態です。

new_user->put_Description(L"このアカウントはテスト用です");
このような書式で、put_xxxxxxxx()では、無理と解釈してよいですか?
またproperty_name[item]といったように配列で取得するようなイメージが筒か見とれたのですが、ADSIのADsGetObjectを利用した場合の「都道府県」や「番地」などの指定をどのようにPG作成をすればよいか判らないです。

もうすこしだけ、C++に歩みよったアドバイスをいただけませんか?
よろしくお願いします。

編集 削除
オショウ  2009-05-20 20:08:35  No: 70186  IP: [192.*.*.*]

再度・・・

http://www.microsoft.com/japan/technet/scriptcenter/scripts/ad/users/modify/default.mspx

以上。参考まで。

編集 削除
オショウ  2009-05-20 21:42:02  No: 70187  IP: [192.*.*.*]

追伸

http://www.codeguru.com/forum/showthread.php?t=309450

ここのシンプルな方法と上記のURL中のitem名等合わせれば
実現できると思いますが。

以上。

編集 削除
aetos  2009-05-21 10:34:38  No: 70188  IP: [192.*.*.*]

例えば、私書箱情報を削除するサンプルがこれですね。
http://www.microsoft.com/japan/technet/scriptcenter/scripts/ad/users/modify/usmdvb09.mspx
objUser が IADsUser でしょう。

IADsUser のリファレンス
http://msdn.microsoft.com/en-us/library/aa746340.aspx
には、PutEx というのがありませんが、IADsUser は IADs を継承しており、IADs に PutEx がありますので、IADsUser::PutEx が使えます。
http://msdn.microsoft.com/en-us/library/aa746353.aspx

あとは、プロパティ名ですが、MSDN の IADs 周りを見ても見つかりませんね。
このあたりからそれっぽいものを見つけることになるのでしょうか。
http://msdn.microsoft.com/en-us/library/cc219751.aspx

編集 削除
さんぽ道  2009-05-21 12:19:57  No: 70189  IP: [192.*.*.*]

オショウさん、aetosさん貴重な情報ありがとうございます。
2つの提供頂いた情報をもとに、解決できそうです。

最後にもう1点、関連項目としての不明点なのですが、
各プロパティにセットできるサイズ長についてです。
リファレンスから探すことができなかったのですが
セット時に、try{}catchでエラーを拾い上げるしかないでしょうか?

編集 削除
aetos  2009-05-22 10:55:39  No: 70190  IP: [192.*.*.*]

http://msdn.microsoft.com/en-us/library/cc219751.aspx

ここの各プロパティに載ってませんかね。
文字列に関しては、rangeLower と rangeUpper がそれぞれ、最小長と最大長だと思います。

データ型が何かは、omSyntax とか attributeSyntax を見ればいいみたいです。
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/oct05/hey1028.mspx
http://msdn.microsoft.com/en-us/library/cc223177.aspx

編集 削除
さんぽ道  2009-05-28 12:57:10  No: 70191  IP: [192.*.*.*]

aetosさん、丁寧にリンク貼り頂きまして
ありがとうございました。

プロファイルのプロパティのみ、最大値がわからなかったので
もしわかるようでしたら、お願いします。

cn: Profile-Path
ldapDisplayName: profilePath
attributeId: 1.2.840.113556.1.4.139
attributeSyntax: 2.5.5.12
omSyntax: 64
isSingleValued: TRUE
schemaIdGuid: bf967a05-0de6-11d0-a285-00aa003049e2
systemOnly: FALSE
searchFlags: fCOPY
attributeSecurityGuid: 5f202010-79a5-11d0-9020-00c04fc2d4cf
systemFlags: FLAG_SCHEMA_BASE_OBJECT
schemaFlagsEx: FLAG_ATTR_IS_CRITICAL

omSyntax: 64より、UNICODEのstringと言うのが
読み取れましたが、最大値は、ないということでしょうか?
初歩的な質問かも知れませんが、お願い致します。

編集 削除
aetos  2009-05-29 10:50:52  No: 70192  IP: [192.*.*.*]

今さらだけど、ここの方が見やすいかも
http://msdn.microsoft.com/en-us/library/ms675089.aspx

で…えっと。
rangeUpper が定義されていないとはどういう意味なのか、ということが明確に書いてある場所が見つかりません。
が、記述ミスではなく、定義されていない属性もある、ということは間違いありません。
推測では、たぶん無制限なんじゃないかな、とは思いますが。

編集 削除
aetos  2009-05-29 10:54:54  No: 70193  IP: [192.*.*.*]

もっとも、無制限とは言え、パス文字列ですから、実用上、MAX_PATH(260)が最大長だと思います。
この長さを超えるパスを持つファイルも作れますが、エクスプローラやコマンドプロンプトではアクセスできません。

編集 削除
さんぽ道  2009-05-29 18:37:04  No: 70194  IP: [192.*.*.*]

aetosさん、返答ありがとうございます。
無事解決できました。
MAX_PATH(260)の知識を持ち合わせていなかったので
MSDNとMAX_PATHの理解により
わかりやすく対応できました。

長い間、ありがとうございました!

編集 削除