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

How to request administrator permissions at runtime?

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

无论如何,我该如何要求?也许从 Win32 API 调用一些 C 函数?我的申请只有 Windows,这就是我提到这一点的原因。 (是的,但我仍然无法从 .net 5 移植过来)

据我研究(2021 年 5 月 9 日)时,没有任何可能的方法来扩展当前程序的权限。另见@Flydog57 的评论:

You can't. If you want to get the OS UAC prompt asking the user to use his/her admin mojo when running the program, only the OS can do that for you, and it is done before your code starts. When a program starts, it gets a token that identifies the user and his/her permissions and privileges. When UAC is enabled, an admin user has a non-admin token and an admin token. As a program starts it gets one of those. Once the program starts, the token cannot change. If you need to do this, start up another process with a different token.

唯一合乎逻辑的解决方案是启动一个新的 executable/process 整体并提升权限。对于 C#,您可以使用 System.Diagnostics.Process.

但是,这可能会在未来改变(我没有消息来源,但有可能)。