启动隐藏的控制台进程,但仍然有 UAC 提示

Posted

技术标签:

【中文标题】启动隐藏的控制台进程,但仍然有 UAC 提示【英文标题】:Launching hidden console process, but still with UAC prompt 【发布时间】:2018-01-08 03:23:26 【问题描述】:

我正在尝试启动一个隐藏的控制台应用程序,但要求该应用程序具有提升的权限。

我已经成功地让 UAC 提示出现,但是当我尝试隐藏进程时无法让它出现。

ProcessStartInfo proc = new ProcessStartInfo();
proc.UseShellExecute = false;
proc.FileName = "C:/example.exe";
proc.CreateNoWindow = true;
proc.Verb = "runas";

这将导致在后台启动一个进程,除非没有出现提示(并且没有提升的权限)。如果我将 UseShellExecute 更改为 true,则会出现 UAC 提示,但控制台窗口也是可见的。

【问题讨论】:

您可以使用 Win32 API ***.com/a/3571628/495455 隐藏控制台窗口 【参考方案1】:

您需要将 WindowStyle 设置为 ProcessWindowStyle.Hidden,如 Jexus Manager 所示,

https://github.com/jexuswebserver/JexusManager/blob/be90688abd03780a714dc401054e22fa4afa2be3/Microsoft.Web.Administration/IisExpressServerManager.cs#L41

【讨论】:

以上是关于启动隐藏的控制台进程,但仍然有 UAC 提示的主要内容,如果未能解决你的问题,请参考以下文章

如何在启动程序且 UAC 被禁用时强制提示输入凭据?

c#在以管理员权限运行控制台命令时,怎么不让它弹出uac提示框?

启动IE浏览器弹出“用户账户控制”(UAC)窗口,怎么取消。

如何利用组策略替代Windows的UAC(用户账户控制)?

使用UAC白名单让指定的程序不受UAC限制,很实用的哦

如何在给定 PID 的情况下隐藏进程的控制台?