windows - .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"
启动该过程。有更好的选择吗?
解决方案
推荐阅读
- ios - 在collectionview中计算高度时,ios swift index 0超出了空数组的范围
- python - Heroku客户端连接功能上的Flask Socketio运行但不是服务器端
- kotlin - Kotlin Koans 课程视图未在最新的 Android Studio 中加载
- android - WebView 和本机登录 - 验证的最佳方式
- sql-server - 在 SQL Server 2014 中使用 Guid 作为 PK
- reactjs - @material-ui/core 和 @types/material-ui 是什么关系?
- go - 在 Golang 中返回一个带有接收器的函数
- javascript - Jasmine - 我如何模拟 finally 调用?
- jquery - 通过 Symfony 3.4 上的 CSRF 令牌保护 jquery Ajax 请求免受 CSRF 攻击
- reactjs - 在 ASP.NET Core API 中处理 id_token