Search code examples
c#.netwindowsuserprincipal

How to create new user account without password


I would like to programmatically add new local user to a computer. I found the code here. But I would like that the user could login without password. I saw that there is an option UserPrincipal.PasswordNotRequired=true but if I don't use SetPassword() it throws me an exception:

The password does not meet the password policy requirements...

Is it possible to make a new user with no password?

EDIT: the current code, which adds a new user successfully, but I have to provide some password.It is a complete copy from the link provided:

PrincipalContext oPrincipalContext = GetPrincipalContext();

UserPrincipal oUserPrincipal = new UserPrincipal(oPrincipalContext);
oUserPrincipal.Name = sUserName;
oUserPrincipal.SetPassword(sPassword);
oUserPrincipal.DisplayName = windowsUsername.Text;
oUserPrincipal.PasswordNeverExpires = true;
oUserPrincipal.PasswordNotRequired = true;
oUserPrincipal.Save();

GroupPrincipal usersGroup = GroupPrincipal.FindByIdentity(oPrincipalContext, "Users");
usersGroup.Members.Add(oUserPrincipal);
usersGroup.Save();

Solution

  • There are two potential reasons why your code isnt working.

    1. Youre not running as admin
    2. Your machine is on a domain with a group policy preventing what you want to do.

    The code below has been tested on my machine and is working.

    void Main()
    {
        PrincipalContext oPrincipalContext = GetPrincipalContext();
    
        UserPrincipal oUserPrincipal = new UserPrincipal(oPrincipalContext);
        oUserPrincipal.Name = "TestUser";
        oUserPrincipal.SetPassword("");
        oUserPrincipal.DisplayName = "TestUser";
        oUserPrincipal.PasswordNeverExpires = true;
        oUserPrincipal.PasswordNotRequired = true;
        oUserPrincipal.Save();
    
        GroupPrincipal usersGroup = GroupPrincipal.FindByIdentity(oPrincipalContext, "Users");
        usersGroup.Members.Add(oUserPrincipal);
        usersGroup.Save();
    }
    
    PrincipalContext GetPrincipalContext()
    {
        var dc = new PrincipalContext(ContextType.Machine);
        return dc;
    }
    

    Things for you to try, 1. Try it on a machine that is not on your domain. 2. Try it on a machine that does not have any group policies applied. 3. Run your app as admin on the machine that you're having the issue with