为了账号安全,请及时绑定邮箱和手机立即绑定

运行提升的流程

运行提升的流程

C#
紫衣仙女 2019-12-06 10:47:30
我正在尝试使用以下代码运行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";但没有骰子。
查看完整描述

3 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

您是否尝试为ProcessStartInfo对象分配管理凭据?


SecureString password = new SecureString();

password.AppendChar('p');

password.AppendChar('w');

cmd.UserName = "admin";

cmd.Password = password;


查看完整回答
反对 回复 2019-12-06
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

我尝试使用UseShellExecute = false; 动词=“ runas”; RedirectStandardInput = true; 域= du [0]; UserName = UserAdministrator; 密码= SecureStringHelper.ToSecureString(pwd); LoadUserProfile = true; 并在清单中使用requestExecutionLevel。如果我使用UseShellExecute = true; 我收到错误消息:Process对象必须将UseShellExecute属性设置为false才能以用户身份启动进程。

查看完整回答
反对 回复 2019-12-06
  • 3 回答
  • 0 关注
  • 416 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信