2010-10-04 85 views
1

我有一个使用COM文件的应用程序。有时候这个文件还没有被regsvr32注册,我想编写一个函数,如果文件无法加载,它会尝试注册并重试。要做到这一点,我需要管理员权限,所以我想问问是否有办法显示UAC“以管理员身份运行”的问题给用户在那些时间有权注册文件并将其关闭(如果可能的话,如果没有的话,它会在下次应用程序执行时运行“正常”)。 现在我只是打算启动另一个程序,并将其作为管理员运行,但我已经看到一些安装程序在未询问管理员权限的情况下运行,并且当进度条开始时向用户显示UAC问题我想要做那样的事情。 有没有一个Win32 API函数或库来做到这一点?UAC以编程方式询问权限

谢谢

+0

流程标高设置在流程开始时,不在其运行时设置。您所描述的情况为例,可能是安装程序以静默模式在场景后面执行外部批处理文件,从而启动新的进程。 – Stavm 2016-06-19 06:21:20

回答

1

您的方法是正确的。无法提升流程。你被启动升高或者你不升级,并且在流程的整个生命周期中保持这种状态。为了实现你想要的,你必须启动一个不同的过程,并将它启动为提升。您的主线应用保持不升高。 UAC提示将在第二个进程启动时出现。为了获得良好的用户体验,您应该有一个按钮或菜单项来执行启动,并且该项目应该有一个屏蔽。这样用户并不感到惊讶。如果您通过程序检测到需要启动,至少首先在消息框中输入“我检测到您需要安装XYZ,那么您可以吗?”并在OK上放置盾牌,在Cancel上放置盾牌,如果它们单击OK,则启动显式应用程序。这将触发UAC提示,并且用户将期待它。

相关问题