首页 > 解决方案 > .NET Framework 桌面应用程序如何获得提升的权限?

问题描述

目标

目标是触发 UAC 对话框并允许应用程序临时提升权限以执行需要管理员访问权限的活动,但不要求整个应用程序以提升的权限运行。

进程具有固定的权限,对吗?

如果我没记错的话,操作系统级别的“进程”模型要求进程以与它开始时相同的权限完成(即不能更改)。

所以“提升”的唯一方法是开始一个新的过程。没问题 - 进程可以做它需要然后终止的事情,并根据需要进行进程间通信。但是启动进程的“现代 .NET 方式”是什么?

是否仍然存在声明性选项?

有一些文章(例如VS 2012 的C# Corner 文章)讨论了在以下内容中添加声明性安全条件app.manifest

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

...但是,我无法按照文章中的说明进行操作...在 VS 2019 中根本不需要添加应用程序清单看来(VS 2019,.NET Framework 4.7.2,控制台应用程序):

没有添加清单的选项

还是程序化选项是唯一的方法?

我相信我可以使用 aSystem.Diagnostics.ProcessStartInfo来指定.verb = "runas"启动该过程。有更好的选择吗?

标签: windowsvisual-studio-2019.net-framework-4.8

解决方案


推荐阅读