次の方法で共有


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

この記事では、 DirectoryServices 名前空間を使用して、Visual C# のローカル システムとグループにユーザーを追加する方法について説明します。

元の製品バージョン: Visual C#
元の KB 番号: 306273

まとめ

このステップ バイ ステップの記事では、 DirectoryServices 名前空間を使用して、ローカル システムとグループにユーザーを追加する方法について説明します。

サンプルを作成する

  1. Visual Studio .NET 2003、Visual Studio 2005、または Visual Studio 2008 を起動し、新しい Visual C# コンソール アプリケーション プロジェクトを作成します。

  2. ソリューション エクスプローラーで、[参照を右クリックし、[参照の追加] をクリック

  3. System.DirectoryServices.dll アセンブリへの参照を追加します。

  4. Class1.cs ファイル内のコードを次のコードに置き換えます。

    Note

    Visual C# 2005 または Visual C# 2008 では、 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 ベースのコンピューターで次の手順に従って、アカウントが作成され、ゲスト グループに追加されたことを確認します。

    1. Start メニューの Programs をポイントし、Administrative Tools をポイントして、[Computer Management をクリックします。
    2. クリックして [ローカル ユーザーとグループ ] ノードを展開します。 新しいアカウントは、[ユーザー] ノードの下とゲスト グループのノードの下に表示されます。

    Windows XP ベースのコンピューターで次の手順に従って、アカウントが作成され、ゲスト グループに追加されたことを確認します。

    1. [スタート] メニューの [コントロール パネル] をクリックします。
    2. User アカウントをダブルクリックします。 新しいユーザー アカウントが User アカウント ダイアログ ボックスに表示されます。

    重要

    テストが完了したら、新しく作成したユーザー アカウントをシステムから削除します。

新しいディレクトリ エントリを作成する

このサンプルでディレクトリ エントリを作成するときは、システムが Windows NT、Windows 2000、または Windows XP を実行していることを前提としています。

Note

DirectoryEntry コンストラクターに渡される文字列は、"WinNT://"で始まります。 他のサード パーティのオペレーティング システムでディレクトリ サービスを実行することもできます。

DirectoryEntry AD = new DirectoryEntry("WinNT://" + SystemInformation.ComputerName + ",computer");

ディレクトリ ツリーにディレクトリ エントリを追加する

次のコードでは、TestUser1の値を持つユーザー型の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 メソッドを呼び出します。 この場合、ゲスト グループが検索の対象になります。 このコードは、 Find メソッドが返す値をテストして、グループが見つかったかどうかを判断します。 グループが見つかった場合は、新しいユーザー アカウントがグループに追加されます。
DirectoryEntry grp;
grp = AD.Children.Find("Guests", "group");
if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}

トラブルシューティング

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