2011-07-14 79 views
1

我试图以编程方式添加一个像下面这样的用户,但在保存时获取访问被拒绝的消息。我在Windows 7上本地运行,代码位于控制台应用程序中。尝试添加Windows用户帐户时访问被拒绝

/// <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); 

这里的代码是如何建立一个粗略的看法:

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

您是否以管理员模式运行整个应用程序? – yakatz

+0

你在哪里提供管理员用户名和密码? u.SetPassword和u.Name是您正在创建的用户的密码和名称,但与具有创建新用户权限的应用程序无关。 – hatchet

+0

您似乎还没有以管理员身份运行。您是否曾尝试以管理员身份从命令行运行您的应用程序? (如果你不确定如何做到这一点,这可能会有所帮助:http://www.howtogeek.com/howto/windows-vista/run-a-command-as-administrator-from-the-windows-vista-run-盒/) –

回答

相关问题