集八方资源,代码都应该一看就懂的
//自定义创建一个成功的绿色
Color cSuccess = Color.FromArgb(144, 238, 144);
foreach (DataGridViewRow row in dataGridViewUsers.Rows)
Process process = new Process();
process.StartInfo.WorkingDirectory = @"C:/WINDOWS/system32";
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.Verb = "runas";
//调用cmd时不打开控制台窗口,也就是后台运行的感觉
process.StartInfo.CreateNoWindow = true;
process.Start();
//使用net添加用户命令
string cmd = "net user " + username + " " + password + " /ADD /ACTIVE:YES " +
"/EXPIRES:NEVER /COMMENT:\"" + comment + "\" /FULLNAME:" + username;
process.StandardInput.WriteLine(cmd);
process.StandardInput.Flush();
log.Info(cmd);
//判断条件并设置为管理员
if (isadmin)
{
log.Info("net LOCALGROUP Administrators " + username + " /add");
//使用net localgroup administrators 账户名 /add命令设置为管理员账户
process.StandardInput.WriteLine("net LOCALGROUP Administrators " + username + " /add");
}
//输入命令后一定要调用close,不然会卡住,就不会执行下面的,我是用的循环添加多用户,这要close后才能继续下一个循环
process.StandardInput.Close();
//拿到输出流,用于获取命令执行结果及错误
StreamReader readerEnd = process.StandardOutput;
StreamReader readerErr = process.StandardError;
process.WaitForExit();
string outMsg = "";
string errMsg = "";
//判断process.HasExited,命令执行完之后再获取结果
if (process.HasExited)
{
outMsg = readerEnd.ReadToEnd();
errMsg = readerErr.ReadToEnd();
log.Info("outMsg:" + outMsg);
log.Error("errMsg:" + errMsg);
}
//关闭process
process.Close();
if (!string.IsNullOrEmpty(errMsg))
{
//有错误的则把datagridview行设置为红色提示
dataGridViewUsers.Rows[row.Index].DefaultCellStyle.BackColor = Color.Red;
//datagridview 单元格的鼠标hover显示字符
dataGridViewUsers.Rows[row.Index].Cells[0].ToolTipText = errMsg;
dataGridViewUsers.Rows[row.Index].Cells[1].ToolTipText = errMsg;
dataGridViewUsers.Rows[row.Index].Cells[2].ToolTipText = errMsg;
}
//添加成功将该行变为绿色
else dataGridViewUsers.Rows[row.Index].DefaultCellStyle.BackColor = cSuccess;
一点点收获及存储