Windows 7 如何实现自定义UAC权限UI?

Windows 7 如何实现自定义UAC权限UI?,windows-7,uac,Windows 7,Uac,在Windows资源管理器(Windows 7)中删除文件时,如果删除文件需要管理员权限,则会显示此对话框: 有没有办法在我的应用程序中实现这种效果 目前,我正在启动一个“以管理员身份”的流程,以执行相同的操作(替换文件而不是删除文件),因此会向用户显示通用UAC对话框,询问: “是否允许以下程序对此计算机进行更改?” 在第三方应用程序中,浏览器显示的那种有用的用户界面(与通用UAC对话框相反)可能吗 我猜不会,因为这将允许第三方偷偷提升权限。Windows 7上的默认设置是大多数系统组件不显

在Windows资源管理器(Windows 7)中删除文件时,如果删除文件需要管理员权限,则会显示此对话框:

有没有办法在我的应用程序中实现这种效果

目前,我正在启动一个“以管理员身份”的流程,以执行相同的操作(替换文件而不是删除文件),因此会向用户显示通用UAC对话框,询问:

“是否允许以下程序对此计算机进行更改?”

在第三方应用程序中,浏览器显示的那种有用的用户界面(与通用UAC对话框相反)可能吗


我猜不会,因为这将允许第三方偷偷提升权限。

Windows 7上的默认设置是大多数系统组件不显示UAC对话框

如果将设置更改为“始终提示”,您将看到在资源管理器对话框中单击“继续”将创建正常的UAC提示


作为非系统二进制文件,您的代码将始终提示,除非在最宽松的UAC设置下(从不提示)。

用于将屏蔽添加到按钮。当用户按下按钮时,创建帮助对象。

是的,这是正确的:您可以在任何需要的UI中显示高程输入按钮(在本例中继续),但是,无论您是启动新进程还是创建提升的COM对象,提升进程都将始终显示系统确认提示。感谢您提供设置屏蔽图标的指针。我最终使用了SendMessage,因为我没有正确的#defines来使用该函数/宏(而且我不想随便使用#define(u Win32什么的)。我不能使用COM,所以我只是以管理员身份运行exe的副本,有一些特殊的cmdline选项指示它“做管理工作”。shield图标只是提醒用户“如果你按下此按钮,有人会请求你提升权限,所以不要惊讶。”请求提升权限的一种方法是使用COM,但命令行也可以。有趣的是,即使没有UAC提示,Windows也倾向于显示此屏蔽。当UAC提示不会出现时(由于系统设置的原因),他们没有多花一点时间隐藏防护罩大概是因为每个人都应该在启用UAC的情况下运行,这会使源代码复杂化,但没有多少好处。