管理员权限提示在C#应用程序中弹出

Raj*_*Raj 8 c# wpf uac c#-3.0

我的应用程序中有一个需要管理员权限的功能.

我想要的是当我点击按钮执行该功能时,它应该询问管理员用户名和密码.(启动UAC对话框.同时在该按钮上显示图标.)

可能吗?

替代文字

PS:我知道通过在清单文件中进行修改来启动具有管理员权限的应用程序.

此功能也是大型程序的一部分,不能转移到单独的程序中.

Nir*_*Nir 5

您可以使用Windows API代码包中的 StockIcons.Shield获取图标

您可以使用"runas"动词运行具有管理员权限的程序而无需更改程序清单(您也可以使用此命令以管理员权限重新启动程序):

Process.Start(new ProcessStartInfo()
   {
        Verb = "runas",
        FileName = "Notepad.exe",
   });
Run Code Online (Sandbox Code Playgroud)

有一个COM API,可以让你在非管理进程中创建一个具有管理员权限的COM对象,但我相信从.net应用程序中使用它是非常困难的.


Rob*_*Rob 4

实现此目的的最佳方法是拥有一个辅助可执行文件,其中包含需要管理权限的代码,并适当地体现出来。当您的应用程序需要执行需要管理权限的代码时,请调用该程序。

例如:

MyProgram.exe - 无清单
MyProgramElevated.exe - 有一个清单表明它需要管理员权限

MyProgram.exe需要执行提升的操作时MyProgramElevated.exe,它会执行,传递命令行参数来指示需要什么提升的任务。