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

C#应用程序中的管理员权限提示弹出窗口,c#,wpf,c#-3.0,uac,C#,Wpf,C# 3.0,Uac,我的应用程序中有一个需要管理员权限的函数 我想要的是,当我点击按钮执行该功能时,它应该询问管理员用户名和密码。(启动UAC对话框。同时在该按钮上显示图标。) 可能吗 PS:我知道通过在清单文件中进行修改来启动具有管理员权限的应用程序 此外,此函数是大型程序的一部分,不能转移到单独的程序中。实现此功能的最佳方法是使用一个包含需要管理权限的代码的辅助可执行文件,并适当地显示该代码。当应用程序需要执行需要管理权限的代码时,调用该程序 例如: MyProgram.exe-无清单 MyProgramEl

我的应用程序中有一个需要管理员权限的函数

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

可能吗

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


此外,此函数是大型程序的一部分,不能转移到单独的程序中。

实现此功能的最佳方法是使用一个包含需要管理权限的代码的辅助可执行文件,并适当地显示该代码。当应用程序需要执行需要管理权限的代码时,调用该程序

例如:

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


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

您可以使用StockIcons获取图标。屏蔽

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


有一个COM API,允许您在非管理进程内创建具有管理权限的COM对象,但我相信从.net应用程序中使用它是非常困难的。

这是我想做的第一件事,但该函数是大型程序的一部分,不能传输到单独的程序。@Raj,除了按照我的建议去做之外,我不知道有什么方法可以获得“完整”令牌。我已经在你的问题中添加了一些标签,希望能让你的问题更清晰,因为其他人可能知道一个解决方案(我不知道=)你必须在授予完全管理员访问权限后重新启动你的应用程序,以便你的应用程序能够利用新的权限。因此@Rob建议您使用单独的应用程序。我能给出的最好建议是,如果您真的需要,在应用程序启动时请求完全访问权限。我很感激您的建议,但我们的应用程序甚至可以由来宾用户执行(这是一项要求),而且只是有时我们需要管理员权限。@Raj我相信UAC不会这样工作。祝您好运:)Windows 7/Vista如何显示一个单击弹出UAC对话框的按钮?@Raj,如果您观察任务管理器(例如),请查看它(
TaskMgr.exe
)在首次加载时的PID(进程Id),而不是单击“显示来自所有用户的进程”按钮时的PID。请注意,它会发生变化。这是因为它是以适当的权限重新启动的。
Process.Start(new ProcessStartInfo()
   {
        Verb = "runas",
        FileName = "Notepad.exe",
   });