提升进程以管理员身份运行不起作用

Posted

技术标签:

【中文标题】提升进程以管理员身份运行不起作用【英文标题】:Elevating a process to run as admin doesn't work 【发布时间】:2009-10-21 22:11:18 【问题描述】:

。如果我从提升的命令提示符运行该应用程序,它运行良好。但我下面的代码没有。

Process setupws = new Process();
setupws.StartInfo.FileName = @"setupws.exe";
setupws.StartInfo.Verb = "runas";
setupws.StartInfo.UseShellExecute = true;
setupws.Start();
setupws.WaitForExit();

setupws.exe 文件运行良好,只是不以管理员身份运行。

我做错了什么?

谢谢

PS。我还在 app.manifest 文件中使用了highestAvailable 和requireAdministrator

【问题讨论】:

我很确定您需要的不仅仅是 runas。 【参考方案1】:

您需要在清单中将您的安装程序标记为 requestedExecutionLevel level=requireAdministrator,请参阅Create and Embed an Application Manifest (UAC)。

PS。 requireAdministrator 应该在 setupws.exe 的清单中。

【讨论】:

我的清单确实设置了 requestedExecutionLevel level="requireAdministrator"。另外,我的 setupws.exe 文件没有使用清单文件,它不是我的,所以它可能永远不会。但这就是我认为“runas”的用途。 它确实应该是一个 setupsw 清单...无论如何,您还必须在 ProcessInfo 上设置 ErrorDialog 和 ErrorDialogParentHandle,请参阅msdn.microsoft.com/en-us/library/bb756922.aspx,因为某些 HWND 必须拥有提升 UI 提示对话框。跨度> 【参考方案2】:

您是否曾以管理员身份运行您的应用并尝试过这种方式?你可以这样做:

using System.Security.Permissions;

var mine = new EnvironmentPermission(PermissionState.Unrestricted);
mine.AddPathList(EnvironmentPermissionAccess.AllAccess, Environment.CurrentDirectory);

【讨论】:

以上是关于提升进程以管理员身份运行不起作用的主要内容,如果未能解决你的问题,请参考以下文章

注册表中的 RUNASADMIN 似乎在 Windows 7 中不起作用

让 MVC 网站以管理员身份启动进程

Laravel 5路由的多个中间件不起作用

cad打开后出现了安全系统软件锁许可管理不起作用或未正确安装

管理员只能访问页面,如果声明不起作用

带有回调示例的线程不起作用。