尝试添加Windows用户帐户时拒绝访问

时间:2011-07-14 21:14:44

标签: c#-4.0 userprincipal

我正在尝试以编程方式添加如下所示的用户,但在Save上获得访问被拒绝的消息。我在Windows 7上本地运行,代码驻留在控制台应用程序中。

/// <summary>
/// 
/// </summary>
/// <param name="userName"></param>
/// <param name="password"></param>
/// <param name="description"></param>
public static void CreateUser(string userName, string password, string description)
{
    PrincipalContext pc = new PrincipalContext(ContextType.Machine, null);
    System.DirectoryServices.AccountManagement.UserPrincipal u = new UserPrincipal(pc);
    u.SetPassword(password);
    u.Name = userName;
    u.Description = description;
    u.UserCannotChangePassword = true;
    u.PasswordNeverExpires = true;
    u.Save();

    GroupPrincipal gp = GroupPrincipal.FindByIdentity(pc, "Users");
    gp.Members.Add(u);
    gp.Save();
}

有什么想法吗?我尝试提供管理员用户名和密码,但仍然会收到同样的错误。

控制台应用程序执行如下:

 ProcessStartInfo startInfo = new ProcessStartInfo();
                    startInfo.UserName = userName;
                    startInfo.Password = securePassword;
                    startInfo.LoadUserProfile = true;
                    startInfo.UseShellExecute = false;
                    startInfo.FileName = batchPath;
                    startInfo.Arguments = operationLogID.ToString();
                    Process.Start(startInfo);

以下是如何设置代码的粗略视图:

  • 控制台应用程序测试工具以调试模式执行。
  • 我检查一个用户,如果他们不存在..然后我尝试创建如上所示。这是发生错误的地方。

1 个答案:

答案 0 :(得分:1)

即使您以管理员身份登录,也需要以管理员身份运行控制台。以下是如何以管理员身份启动控制台:http://www.howtogeek.com/howto/windows-vista/run-a-command-as-administrator-from-the-windows-vista-run-box/

然后找到您的控制台应用并运行它。

祝你好运!

- 迈克尔