首页 > 解决方案 > 如何在运行时请求管理员权限?

问题描述

我想在我的应用程序运行时请求管理员权限,但我找不到任何东西,尽管谷歌搜索和搜索。我只能在启动时找到有关权限的帖子,我找到了一个,但是它对 .NET Framework 有效,我不能真正使用 dNF,我使用的是 .NET Core 5。

无论如何,我如何要求它?也许从 Win32 API 调用一些 C 函数?我的应用程序仅适用于 Windows,这就是我提到这一点的原因。(是的,但我仍然无法从 .net 5 移植过来)

标签: c#runtimeadmin

解决方案


就我的研究(2021 年 5 月 9 日)而言,目前还没有办法扩展当前程序的权限。另见@Flydog57 的评论:

你不能。如果您想获得操作系统 UAC 提示,要求用户在运行程序时使用他/她的管理员 mojo,只有操作系统可以为您执行此操作,并且在您的代码启动之前完成。当程序启动时,它会获得一个标识用户及其权限和特权的令牌。启用 UAC 后,管理员用户拥有一个非管理员令牌和一个管理员令牌。当程序启动时,它会获得其中之一。一旦程序启动,令牌就无法更改。如果您需要这样做,请使用不同的令牌启动另一个进程。

唯一合乎逻辑的解决方案是与提升的权限一起启动一个新的可执行文件/进程。使用 C#,您可以使用System.Diagnostics.Process.

但是,这可能会在未来发生变化(我没有消息来源,但这是一种可能性)。


推荐阅读