我的应用程序中有一个需要管理员权限的功能。
我想要的是当我点击按钮执行该功能时,它应该询问管理员用户名和密码。 (启动UAC对话框。同时在该按钮上显示图标。)
有可能吗?
PS:我知道通过在清单文件中进行修改来启动具有管理员权限的应用程序。
此功能也是大型程序的一部分,无法转移到单独的程序中。
答案 0 :(得分:5)
您可以使用“runas”动词运行具有管理员权限的程序而无需更改程序清单(您也可以使用此命令以管理员权限重新启动程序):
Process.Start(new ProcessStartInfo()
{
Verb = "runas",
FileName = "Notepad.exe",
});
有一个COM API可以让你在非管理进程中创建一个具有管理员权限的COM对象,但我相信从.net应用程序中使用它是非常困难的。
答案 1 :(得分:4)
实现此目标的最佳方法是使用包含需要管理权限的代码的辅助可执行文件,该代码已正确显示。当您的应用程序需要执行需要管理权限的代码时,请调用该程序。
例如:
MyProgram.exe - 没有清单
MyProgramElevated.exe - 有一个清单,表明它需要管理员权限
当MyProgram.exe
需要执行提升的操作时,它会执行MyProgramElevated.exe
,传递指示需要提升任务的命令行参数。