当前位置: 首页 > 编程语言 > C#

以管理员身份运行cmd和命令?分享

时间:2023-04-10 19:48:32 C#

以管理员身份运行cmd和命令?这是我的代码:procStartInfo.UseShellExecute=true;procStartInfo.CreateNoWindow=true;procStartInfo.Verb="runas";procStartInfo.参数="/env/user:"+"管理员"+"cmd"+命令;///command包含cmd中要执行的命令System.Diagnostics.Processproc=newSystem.Diagnostics.Process();proc.StartInfo=procStartInfo;proc.开始();}catch(Exceptionex){MessageBox.Show(ex.Message);我想保留procStartInfo.UseShellExecute=trueprocStartInfo.RedirectStandardInput=false;执行命令?我尝试执行我在参数中传递的命令,但命令没有执行。正如@mtijn所说,你已经有很多事情要做,以后你也会不知所措。您还需要确保正确转义。假设您想运行以下提升的命令:dirc:首先,如果您只是通过Process.Start()运行此命令,将立即打开和关闭一个窗口,因为没有任何东西可以让该窗口保持打开状态。它处理命令并退出。为了保持窗口打开,我们可以将命令包装在一个单独的命令窗口中,并使用/K开关使其保持运行:cmd/K"dirc:"要运行命令,我们可以使用runas之类的runas.exe.exe,除了我们需要逃避更多。根据帮助文档(runas/?),我们传递给runas的命令中的任何引号都需要用反斜杠转义。不幸的是,用上面的命令这样做会给我们一个双反斜杠,这会混淆cmd解析器,所以它也需要被转义。所以上面的命令最终会是:cmd/K"dirc:\"最后,使用您提供的语法,我们可以将所有内容包装到一个runas命令中,并将上面的命令括在另一组引号中:runas/env/user:Administrator"cmd/K"dirc:\""从命令提示符运行上述命令以确保它按预期工作。针对所有这些,最终代码变得更容易组装://假设我们要运行以下命令://dirc://我们要运行的命令stringsubCommand=@"dir";//我们要运行的命令的参数stringsubCommandArgs=@"c:";//我将所有内容包装在CMD/K命令中,以便我可以看到输出并在执行后保持不变//注意:子命令中的参数需要转义其反斜杠,这在字符串subCommandFinal下方得到处理=@"cmd/K"""+subCommand.Replace(@"",@"\")+""+subCommandArgs.Replace(@"",@"\")+@"""";//直接运行runas命令ProcessStartInfoprocStartInfo=newProcessStartInfo("runas.exe");procStartInfo.UseShellExecute=true;procStartInfo.CreateNoWindow=true;//创建我们的参数stringfinalArgs=@"/env/user:Administrator"""+subCommandFinal+@"""";procStartInfo.Arguments=finalArgs;//command包含要在cmd中执行的命令,使用(System.Diagnostics.Processproc=newSystem.Diagnostics.Process()){proc.StartInfo=procStartInfo;proc.开始();为什么用参数初始化一个进程对象然后覆盖那些参数?顺便说一句:您将参数的最后一位设置为将“命令”连接到“cmd”,这没有多大意义,可能是它失败的地方(看起来您错过了一个空格)此外,您目前正在使用标准命令行,您可能希望使用runas工具。您还可以从命令行调用runas。另外,为什么要从命令行运行“命令”?为什么不直接从Process.Start启动它,然后赋予管理员权限呢?这里有一点伪代码:以上是C#学习教程:以管理员身份运行cmd和命令?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——Processp=Process.Start(newProcessStartInfo(){FileName=,Arguments=,UserName="Administrator",密码=,UseShellExecute=false,WorkingDirectory=});本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: