Как создать системного пользователя на сервере Windows 2003 в C # asp.net? - PullRequest
0 голосов
/ 09 августа 2011

Привет, я хочу создать системного пользователя в активном каталоге Windows Server 2003, для которого я использую следующий код C #,

 DirectoryEntry AD = new DirectoryEntry("WinNT://"+Environment.MachineName+",computer");

            DirectoryEntry NewUser = AD.Children.Add(username, "user");

            NewUser.Invoke("SetPassword", new object[] { password });

            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() });
            }

этот код делает пользователя, когда я запускаю это приложение локально на веб-движке visualy studio, но когда я развертываю это приложение на iis на сервере Windows 2003, это выдаст исключение

Исключение:

General Access Denied Error

любезно помогите мне, что я делаю неправильно, какое разрешение требуется для создания пользователя на оконном сервере и как мы даем это разрешение. спасибо.

1 Ответ

0 голосов
/ 09 августа 2011

Посмотрите на пространство имен System.DirectoryServices.AccountManagement.Используя классы из него, вы можете сделать это следующим образом:

using (var context = new PrincipalContext(ContextType.Machine, "MachineName", "AdminUserName", "AdminPassword"))
{
    UserPrincipal user = new UserPrincipal(context, username, password, true);
    user.Description = "Test User from .NET";
    user.Save();

    var guestGroup = GroupPrincipal.FindByIdentity(context, "Guests");
    if (guestGroup != null)
    {
        guestGroup.Members.Add(user);
        guestGroup.Save();
    }
}

Кроме того, вы можете настроить олицетворение в своем приложении и пропустить все параметры в исключении конструктора PrincipalContext первым, если эта функциональность разрешена только для администраторов.

...