我想使用C#代码创建Windows用户。当登录用户拥有管理员权限时,以下方法可以正常工作。它不与有限的用户一起工作。请注意,我可以传递管理员用户的Windows用户名和密码。基本上我想模仿。我试图模拟它没有工作。我尝试将用户namd和密码传递给processinfo。我收到错误“存根收到不良数据”。所以,任何人都可以帮助我如何通过模拟使用C#代码创建Windows用户。使用C#代码创建Windows用户
public static void CreateUser(string userName, string password, string description, string adminUserName, string adminPassword)
{
Process process = new Process();
ProcessStartInfo processInfo = new ProcessStartInfo();
processInfo.WorkingDirectory = Environment.SystemDirectory;
processInfo.FileName = "net.exe";
processInfo.UseShellExecute = false;
processInfo.RedirectStandardError = true;
processInfo.RedirectStandardInput = true;
processInfo.RedirectStandardOutput = true;
processInfo.WindowStyle = ProcessWindowStyle.Hidden;
processInfo.Arguments = @" user " + userName + @" " + password + @" /ADD /ACTIVE:YES " +
@"/EXPIRES:NEVER /FULLNAME:" + userName + @" /PASSWORDCHG:NO /PASSWORDREQ:YES";
if (!string.IsNullOrEmpty(adminUserName))
{
processInfo.UserName = adminUserName;
processInfo.Password = WindowsSecurityHelper.GetSecuredString(adminPassword);
}
process.StartInfo = processInfo;
process.Start();
process.WaitForExit();
process.Close();
}
或
public static void CreateUser(string userName, string password, string description, string userGroup = "Users")
{
PrincipalContext pc = new PrincipalContext(ContextType.Machine, null);
GroupPrincipal gp = GroupPrincipal.FindByIdentity(pc, userGroup);
if (gp != null)
{
UserPrincipal u = new UserPrincipal(pc);
u.SetPassword(password);
u.Name = userName;
u.Description = description;
u.UserCannotChangePassword = true;
u.PasswordNeverExpires = true;
u.Save();
gp.Members.Add(u);
gp.Save();
}
}
“存根收到错误的数据” - 这不可能是实际的错误消息。你能否给我们提供你所得到的错误以及哪一行代码导致错误?谢谢 –
@ hugh - 我在process.Start()获取错误。线。 – Saran
@ hugh-没有一个答案帮助了我。我不能简单地接受它吗? – Saran