创建本地用户帐户 [英] create local user account

查看:315
本文介绍了创建本地用户帐户的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个code创建一个本地Windows用户

i have this code to create a local windows user

public static bool CreateLocalWindowsAccount(string username, string password, string displayName, string description, bool canChangePwd, bool pwdExpires)
    {

        try
        {
            PrincipalContext context = new PrincipalContext(ContextType.Machine);
            UserPrincipal user = new UserPrincipal(context);
            user.SetPassword(password);
            user.DisplayName = displayName;
            user.Name = username;
            user.Description = description;
            user.UserCannotChangePassword = canChangePwd;
            user.PasswordNeverExpires = pwdExpires;
            user.Save();


            //now add user to "Users" group so it displays in Control Panel
            GroupPrincipal group = GroupPrincipal.FindByIdentity(context, "Users");
            group.Members.Add(user);
            group.Save();

            return true;
        }
        catch (Exception ex)
        {
            LogMessageToFile("error msg" + ex.Message);
            return false;
        }

    }

我想这在我的机器上,它工作正常。但后来我把这个Windows服务器上。并试图在那里建立一个用户。

i tried this on my machine it works fine. but then i put this on windows server. and tried to create a user over there.

首先,我得到了错误常规访问被拒绝错误
所以我取得了用户的管理员

First i got the error "General access denied error" so i made the user an administrator

但现在我得到的错误网络路径找不到

but now i get the error "The network path was not found"

我怎样才能解决这个错误..谢谢

how can i solve this error.. thanks

推荐答案

我有一个非常类似的问题的第一线更改为

I had a very similar issue change the first line to

PrincipalContext context = new PrincipalContext(ContextType.Machine, "127.0.0.1");

看看是否能解决您的问题。和三重检查该程序正在运行具有管理员权限。

see if that fixes your issue. And triple check that the program is running with administrator privileges.

另一个问题可能是是服务器有密码复杂性要求和密码是正在被传递给函数不符合这些要求。问题是否消失,如果你通过它 ASfas123 @!FDA 作为密码?

The other issue it could be is the server has password complexity requirements and password that is being passed in to the function does not meet those requirements. Does the problem go away if you pass it ASfas123@!fda as the password?

我90%肯定它是这两个问题之一。

I am 90% sure it is one of those two issues.

有关您的用户群不节能,我不知道为什么。下面是从做你是同样的事情我的项目之一SNIPPIT。我不能见之探源。

For your user groups not saving I am not sure why. Here is a snippit from one of my projects that is doing the same thing you are. I cant see the diffrence.

using (GroupPrincipal r = GroupPrincipal.FindByIdentity(context, "Remote Desktop Users"))
using (GroupPrincipal u = GroupPrincipal.FindByIdentity(context, "Users"))
{
    //snip
    UserPrincipal user = null;
    try
    {
        if (userInfo.NewPassword == null)
            throw new ArgumentNullException("userInfo.NewPassword", "userInfo.NewPassword was null");
        if (userInfo.NewPassword == "")
            throw new ArgumentOutOfRangeException("userInfo.NewPassword", "userInfo.NewPassword was empty");
        //If the user already is in the list of existing users use that one.
        if (pr.ContainsKey(username))
        {
            user = (UserPrincipal)pr[username];
            user.Enabled = true;
            user.SetPassword(userInfo.NewPassword);
        }
        else
        {
            //create new windows user.
            user = new UserPrincipal(context, username, userInfo.NewPassword, true);
            user.UserCannotChangePassword = true;
            user.PasswordNeverExpires = true;
            user.Save();
            r.Members.Add(user);
            r.Save();
            u.Members.Add(user);
            u.Save();
        }
        IADsTSUserEx iad = (IADsTSUserEx)((DirectoryEntry)user.GetUnderlyingObject()).NativeObject;
        iad.TerminalServicesInitialProgram = GenerateProgramString(infinityInfo);
        iad.TerminalServicesWorkDirectory = Service.Properties.Settings.Default.StartInPath;
        iad.ConnectClientDrivesAtLogon = 0;
        user.Save();              
    }
    catch(Exception e)
    {
       //snip
    }
    finally
    {
        if (user != null)
        {
            user.Dispose();
        }
    }
}

这篇关于创建本地用户帐户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆