ディレクトリ サービスと Visual C# を使用してローカル システムにユーザーを追加する方法

文書翻訳 文書翻訳
文書番号: 306273 - 対象製品
この記事は、以前は次の ID で公開されていました: JP306273
すべて展開する | すべて折りたたむ

目次

概要

この資料では、DirectoryServices 名前空間を使用して、ユーザーをローカル システムやグループに追加する方法について手順を追って説明します。

必要条件

  • Microsoft Windows XP、Windows 2000、または Windows NT 4.0
  • Visual C# .NET または Visual C# 2005

サンプルの作成

  1. Microsoft Visual Studio .NET または Microsoft Visual Studio 2005 を起動し、Visual C# のコンソール アプリケーション プロジェクトを新規作成します。
  2. ソリューション エクスプローラで、[参照設定] を右クリックし、[参照の追加] をクリックします。
  3. System.DirectoryServices.dll アセンブリへの参照を追加します。
  4. Class1.cs のコードを次のコードで置き換えます。

    : Microsoft Visual C# 2005 では、Class1.cs が Program.cs に変更されています。
    using System;
    using System.DirectoryServices;
    
    class Class1
    {
        static void Main(string[] args)
        {
        try
            {
    	 DirectoryEntry AD = new DirectoryEntry("WinNT://" + 
    	                     Environment.MachineName + ",computer");
    	 DirectoryEntry NewUser = AD.Children.Add("TestUser1", "user");
    	 NewUser.Invoke("SetPassword", new object[] {"#12345Abc"});
    	 NewUser.Invoke("Put", new object[] {"Description", "Test User from .NET"});
    	 NewUser.CommitChanges();
    	 DirectoryEntry grp;
    
    	 grp = AD.Children.Find("Guests", "group");
    	 if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}
    	 Console.WriteLine("Account Created Successfully");
    	 Console.ReadLine();
    	}
        catch (Exception ex)
    	{
    	 Console.WriteLine(ex.Message);
    	 Console.ReadLine();
    
    	}
        }
    }
    					
  5. プロジェクトをコンパイルして実行します。
  6. Windows 2000 ベースのコンピュータでは、以下の手順に従って、アカウントが作成され、Guest グループに追加されたことを確認します。
    1. [スタート] ボタンをクリックし、[プログラム]、[管理ツール] を順にポイントし、[コンピュータの管理] をクリックします。
    2. [ローカル ユーザーとグループ] をクリックして、展開します。新しいアカウントが [ユーザー] ノードに表示され、同様に、[Guests] グループのノードにも表示されます。
    Windows XP ベースのコンピュータでは、以下の手順に従って、アカウントが作成され、Guest グループに追加されたことを確認します。
    1. [スタート] ボタンをクリックし、[コントロール パネル] をクリックします。
    2. [ユーザー アカウント] をクリックします。新しいユーザー アカウントが [ユーザー アカウント] ダイアログ ボックスに表示されます。
    注意事項 : テストが終わったら、新しく作成したユーザー アカウントはシステムから削除してください。

コードの説明

新しいディレクトリ エントリの作成

このサンプルでは、ディレクトリ エントリを作成するときに、システムが Microsoft Windows NT、Windows 2000、または Windows XP を実行していると想定しています。DirectoryEntry コンストラクタに渡す文字列が "WinNT://" で始まっていることに注意してください。ディレクトリ サービスは、別のサードパーティのオペレーティング システムでも実行できます。
DirectoryEntry AD = new DirectoryEntry("WinNT://" + SystemInformation.ComputerName + ",computer");
				

ディレクトリ ツリーへのディレクトリ エントリの追加

次のコードは、TestUser1 値を持つ user 型の DirectoryEntry を Active Directory ツリーに追加します。
DirectoryEntry NewUser = AD.Children.Add("TestUser1", "user");
				

新しいユーザー アカウントのパスワードと説明の設定

次のコードは、Invoke メソッドを呼び出して、DirectoryEntry オブジェクトの SetPassword メソッドと Put メソッドを呼び出します。これにより、ユーザー アカウントにパスワードを設定し、説明を割り当てます。また、このコードは CommitChanges メソッドを呼び出して、変更を保存しています。
NewUser.Invoke("SetPassword", new object[] {"#12345Abc"});
NewUser.Invoke("Put", new object[] {"Description", "Test User from .NET"});
NewUser.CommitChanges();
				

グループへのアカウントの追加

グループにアカウントを追加するには、以下の手順を実行します。
  1. DirectoryEntry 型の変数を定義します。
  2. ActiveDirectory クラスの Children メンバの Find メソッドを呼び出して、変数に値を読み込みます。この場合は、Guest グループが検索の対象になります。このコードは、Find メソッドが返す値をテストして、グループが見つかったかどうかを判別します。グループが見つかった場合、新しいユーザー アカウントがそのグループに追加されます。
DirectoryEntry grp;
grp = AD.Children.Find("Guests", "group");
if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}
				

トラブルシューティング

この資料のコードを、ユーザー アカウントを作成するための十分な権限を持たずに実行しようとすると失敗します。コードが正常に完了するには、現在ログオンしているユーザーが Administrators グループのメンバであるか、またはユーザー アカウントを作成できる特定の権限を持つユーザーである必要があります。

プロパティ

文書番号: 306273 - 最終更新日: 2006年10月4日 - リビジョン: 2.1
この資料は以下の製品について記述したものです。
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
キーワード:?
kbhowtomaster KB306273
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com