如何用c# asp.net在window server 2003上创建系统用户

本文关键字:2003 创建 系统 用户 server window 何用 asp net | 更新日期: 2023-09-27 18:04:58

嗨,我想在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() });
            }

当我在visual studio web引擎上本地运行这个应用程序时,这段代码使用户但当我在windows server 2003上的iis上部署这个应用程序时,这将给出异常

异常:

General Access Denied Error

请帮助我我做错了什么权限是需要创建用户在窗口服务器和我们如何给这个版本。谢谢。

如何用c# asp.net在window server 2003上创建系统用户

查看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构造函数异常中的所有参数,如果此功能仅允许管理员使用,则跳过第一个参数。