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

C# 如何在运行时请求管理员权限?,c#,runtime,admin,C#,Runtime,Admin,我想在运行时在我的应用程序中请求管理员权限,但是我找不到任何东西,尽管在谷歌上搜索。我只能找到帖子,但是,它对.NETFramework是有效的,我不能真正使用dNF,我使用的是.NETCore5 不管怎样,我怎么要求呢?可能从Win32 API调用一些C函数?我的应用程序仅限于Windows,这就是我提到这一点的原因。(是的,但我仍然无法从.net 5移植)就我的研究(2021年5月9日)而言,当时无法扩展当前程序的特权。另请参见@Flydog57的评论: 你不能。如果您想获得操作系统UAC提

我想在运行时在我的应用程序中请求管理员权限,但是我找不到任何东西,尽管在谷歌上搜索。我只能找到帖子,但是,它对.NETFramework是有效的,我不能真正使用dNF,我使用的是.NETCore5

不管怎样,我怎么要求呢?可能从Win32 API调用一些C函数?我的应用程序仅限于Windows,这就是我提到这一点的原因。(是的,但我仍然无法从.net 5移植)

就我的研究(2021年5月9日)而言,当时无法扩展当前程序的特权。另请参见@Flydog57的评论:


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

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


但是,这在将来可能会改变(我没有资料来源,但这是可能的)。

你不能。如果您想获得操作系统UAC提示,要求用户在运行程序时使用他/她的管理魔咒,则只有操作系统可以为您这样做,并且这是在代码启动之前完成的。当程序启动时,它会获得一个标识用户及其权限和特权的令牌。启用UAC时,管理员用户具有非管理员令牌和管理员令牌。当一个程序启动时,它会得到其中一个。一旦程序启动,令牌就无法更改。如果需要这样做,请使用不同的令牌启动另一个进程。顺便说一句,“dNF”是什么?如果您不需要清单标志,可以使用
newprocessstartinfo{Verb=“runas”,UseShellExecute=true,…}启动一个新进程哦,那太糟糕了