C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: ActiveDirectoryユーザーパスワードの変更


(過去ログ 11 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■1989 / inTopicNo.1)  ActiveDirectoryユーザーパスワードの変更
  
□投稿者/ Kozoo (5回)-(2007/03/12(Mon) 17:27:23)

分類:[C# (Windows)] 

お世話になっております。

勉強も兼ねて、C#2005でADに登録しているユーザーのパスワードを変更するプログラムを作成しております。
利用方法はADユーザーとコンピュータから実行できる"パスワードのリセット"と同様の事を行いたいのです。
ADにアクセスしユーザーの検索をする事はできたのですが、肝心のパスワードを初期化する方法が見つかりません。
MSDNで検索したところADSIを利用する方法はあるようなのですが、不勉強な点もあり中々理解が進まないのが現状です。
ADSI以外を利用したお勧めの方法やサイトがあればご紹介頂けないでしょうか。

宜しくお願いいたします。

引用返信 編集キー/
■2010 / inTopicNo.2)  Re[1]: ActiveDirectoryユーザーパスワードの変更
□投稿者/ Pandora (25回)-(2007/03/13(Tue) 10:02:44)
> ADSI以外を利用したお勧めの方法やサイトがあればご紹介頂けないでしょうか。

 このADSI以外という言葉に引っかかりを覚えますが...

 .netでは、Active Directory へのアクセスには、System.DirectoryServices 群を使用するのが一番良いように思います。

 DirectoryEntry クラスおよび DirectorySearcher クラスでたいていのことはできると思いますよ。

 ただ、ADSI(Active Directory Services Interfaces)技術を使用していますが....
引用返信 編集キー/
■2011 / inTopicNo.3)  Re[2]: ActiveDirectoryユーザーパスワードの変更
□投稿者/ Kozoo (6回)-(2007/03/13(Tue) 12:55:47)
No2010 (Pandora さん) に返信
Pandoraさん
 ご返信ありがとうございます。

 >このADSI以外という言葉に引っかかりを覚えますが...
  ADSIと.NETは別物という認識だったのですが、同じ技術という事なのでしょうか。
  別物という認識であった為、"ADSI以外"という言葉を用いてしまいました。

 >.netでは、Active Directory へのアクセスには、System.DirectoryServices 群を使用するのが一番良いように思います。
 >DirectoryEntry クラスおよび DirectorySearcher クラスでたいていのことはできると思いますよ。
 >ただ、ADSI(Active Directory Services Interfaces)技術を使用していますが....
  仰るとおり、ADに格納されているユーザー情報の大半は上記の2クラスを用いて抽出できました。
  ですが、肝心のパスワードを変更するのに利用できそうな情報は見つける事ができませんでした。
  これは、System.DirectoryServicesではなくIADsを利用して変更するもの、という事なのでしょうか。

質問ばかりで恐縮ですが、何方かご教示願います。
引用返信 編集キー/
■2013 / inTopicNo.4)  Re[3]: ActiveDirectoryユーザーパスワードの変更
□投稿者/ Pandora (26回)-(2007/03/13(Tue) 13:13:34)
2007/03/13(Tue) 13:14:17 編集(投稿者)

> ADSIと.NETは別物という認識だったのですが、同じ技術という事なのでしょうか。
> 別物という認識であった為、"ADSI以外"という言葉を用いてしまいました。

 そうですか?
 解りました。

 ADSI は、ディレクトリ・サービスを統一して扱うことができるように設計されたものです。

 ので、System.DirectoryServices のクラス群は、このインタフェースを.net的に簡易に使えるように
 しているだけなので、下位層ではADSIを使用しています。

> 肝心のパスワードを変更するのに利用できそうな情報は見つける事ができませんでした。

 下記のサイトが参考になるのではないでしょうか?

http://support.microsoft.com/kb/306273/ja

 パスワードの変更は、Invoke("SetPassword",new object[]{"新しいパスワード"}) で可能です。



引用返信 編集キー/
■2017 / inTopicNo.5)  Re[4]: ActiveDirectoryユーザーパスワードの変更
□投稿者/ Kozoo (7回)-(2007/03/13(Tue) 15:47:25)
No2013 (Pandora さん) に返信
Pandoraさん
 ご返信ありがとうございます。

 >ADSI は、ディレクトリ・サービスを統一して扱うことができるように設計されたものです。
 >ので、System.DirectoryServices のクラス群は、このインタフェースを.net的に簡易に使えるように
 >しているだけなので、下位層ではADSIを使用しています。
  なるほど。実際にはADSIを利用したアクセスという事なのですね。
  ADSIに関しての勉強を進めたいと思います。

 >下記のサイトが参考になるのではないでしょうか?
 >http://support.microsoft.com/kb/306273/ja
 >パスワードの変更は、Invoke("SetPassword",new object[]{"新しいパスワード"}) で可能です。
  わざわざサイトまでご紹介頂きありがとうございます。
  Invokeという初めて見るメソッドもありますので、まずはサンプルを見て一つ一つ確認してみたいと思います。
引用返信 編集キー/
■2073 / inTopicNo.6)  Re[5]: ActiveDirectoryユーザーパスワードの変更
□投稿者/ Kozoo (8回)-(2007/03/16(Fri) 18:30:16)
No2017 (Kozoo さん) に返信

以下のソースで解決する事ができました。
アドバイスをして下さった方、ありがとうございました。

    string adsPath = @"LDAP://domainname/CN=cnname,OU=ouname,DC=domainname,DC=co,DC=jp";
    string strPassword = @"1234567890";

    DirectoryEntry dEntry = new DirectoryEntry(adsPath);
    dEntry.Invoke("SetPassword", new object[] { strPassword });

    dEntry.CommitChanges();

ソース上はadspathを直接指定していますが、実際に行う場合は
SAMAccountNameからadspathを引っ張って変更するのが簡単だと思います。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -