C# 命令行添加普通用户和管理员用户,c#运行多条cmd命令,及解决调用cmd运行后卡住问题

集八方资源,代码都应该一看就懂的

//自定义创建一个成功的绿色
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;

一点点收获及存储

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵东19970820

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值