运行提升的流程

我正在尝试使用以下代码运行cmd命令:


ProcessStartInfo cmd = new ProcessStartInfo("cmd.exe");

cmd.RedirectStandardInput = true;

cmd.RedirectStandardOutput = true;

cmd.RedirectStandardError = true;

cmd.UseShellExecute = false;

cmd.CreateNoWindow = true;

cmd.WindowStyle = ProcessWindowStyle.Hidden;

Process exec = Process.Start(cmd);

exec.StandardInput.WriteLine("sc create \"BaliService\" binPath= \"{0}\\BaliService.exe\"", Directory.GetCurrentDirectory());

此命令需要管理员特权,如果我以管理员身份运行cmd并键入命令,则该命令可以正常运行,但是当我以管理员身份运行此应用程序时,此命令无法正常运行。我已经添加了


<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />


到清单文件,该文件每次打开exe时都会提示uac。


我已经看到了多个问题,它们似乎都暗示在提升的应用程序下运行的任何进程都将具有相同的权限,但这对我不起作用。


我尝试过cmd.Verb = "runas";但没有骰子。


紫衣仙女
浏览 425回答 3
3回答

慕姐8265434

您是否尝试为ProcessStartInfo对象分配管理凭据?SecureString password = new SecureString();password.AppendChar('p');password.AppendChar('w');cmd.UserName = "admin";cmd.Password = password;

慕妹3242003

我尝试使用UseShellExecute = false;&nbsp;动词=“ runas”;&nbsp;RedirectStandardInput = true;&nbsp;域= du [0];&nbsp;UserName = UserAdministrator;&nbsp;密码= SecureStringHelper.ToSecureString(pwd);&nbsp;LoadUserProfile = true;&nbsp;并在清单中使用requestExecutionLevel。如果我使用UseShellExecute = true;&nbsp;我收到错误消息:Process对象必须将UseShellExecute属性设置为false才能以用户身份启动进程。
打开App,查看更多内容
随时随地看视频慕课网APP