0

AD からローカル ユーザー アカウントを削除する次のコードがあります。

try
{
    string username = "MyUserName";

    using (DirectoryEntry hostMachineDirectory = new DirectoryEntry("WinNT://localhost"))
    {
        DirectoryEntries entries = hostMachineDirectory.Children;

        DirectoryEntry deUser = null;
        try
        {
            deUser = entries.Find(username, "User");
        }
        catch (COMException ex)
        {
            //Look for "no such user" exception
            if ((uint)ex.ErrorCode != 0x800708ad)
            {
                throw ex;
            }
        }

        if (deUser != null)
            entries.Remove(deUser);
        else
            ShowMessageBoxError("No such user: " + username, MessageBoxIcon.Information);
    }
}
catch (Exception ex)
{
    ShowMessageBoxError(ex);
}

そのようなユーザーがいない場合に、その例外の発生とキャッチを回避する方法はありますか?

4

2 に答える 2

1

.NET 3.5 以降を使用している場合は、System.DirectoryServices.AccountManagement(S.DS.AM) 名前空間を確認してください。ここでそれについてすべて読んでください:

基本的に、ドメイン コンテキストを定義し、AD でユーザーやグループを簡単に見つけることができます。

// set up context to your local machine only
using (PrincipalContext ctx = new PrincipalContext(ContextType.Machine))
{
    // find your user
    UserPrincipal user = UserPrincipal.FindByIdentity(ctx, username);

    if(user != null)
    {
       // if user is found - remove it
       user.Delete();
    }
}

新しい S.DS.AM を使用すると、AD でユーザーやグループを簡単に操作できます。

于 2013-10-11T05:24:56.707 に答える
0

代わりに DirectorySearcher を使用できます。フィルターを設定し、FindOne メソッドを呼び出して、結果が null かどうかを確認します

于 2013-10-11T01:17:05.420 に答える