我试图以编程方式添加一个像下面这样的用户,但在保存时获取访问被拒绝的消息。我在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);
这里的代码是如何建立一个粗略的看法:
- 控制台应用程序测试工具得到在调试模式下执行。
- 我检查一个用户,如果他们不存在..然后我尝试并创建如上所示。这是发生错误的地方。
您是否以管理员模式运行整个应用程序? – yakatz
你在哪里提供管理员用户名和密码? u.SetPassword和u.Name是您正在创建的用户的密码和名称,但与具有创建新用户权限的应用程序无关。 – hatchet
您似乎还没有以管理员身份运行。您是否曾尝试以管理员身份从命令行运行您的应用程序? (如果你不确定如何做到这一点,这可能会有所帮助:http://www.howtogeek.com/howto/windows-vista/run-a-command-as-administrator-from-the-windows-vista-run-盒/) –