如何在运行时请求管理员权限



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

无论如何,我该如何要求它?也许可以从Win32 API调用一些C函数?我的应用程序仅限Windows,这就是我提到这一点的原因。(是的,但我仍然无法从.net 5端口转换过来(

就我的研究(2021年5月9日(而言,没有可能扩展当前程序的权限。另请参阅@Flydog57的评论:

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

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

然而,这种情况在未来可能会改变(我没有消息来源,但有可能(。

最新更新