UAC以编程方式请求许可

时间:2010-10-04 15:01:54

标签: permissions runtime uac

我有一个使用COM文件的应用程序。有时这个文件还没有被regsvr32注册,我想编写一个函数,如果文件无法加载,它会尝试注册并重试。为此,我需要管理员权限,所以我想询问是否有办法在这些时候向用户显示UAC“以管理员身份运行”的问题,以便有权注册该文件而不是将其关闭(如果可能的话,如果没有,它将在下一个应用程序执行时“正常”运行)。 现在我只是计划启动另一个带有清单集的程序来运行它作为管理员,但我已经看到一些运行而没有询问管理员权限,当进度条启动时它们向用户显示UAC问题,所以我我想做那样的事情。 是否有Win32 API函数或库来执行此操作?

由于

1 个答案:

答案 0 :(得分:1)

你的方法是正确的。提升流程是不可能的。您是在升级或未升级的情况下启动的,并且您在此过程的生命周期内保持这种状态。要实现您的目标,您必须启动一个不同的进程,并以提升的方式启动它。您的主线应用程序保持不升级。第二个进程启动时将显示UAC提示。为了获得良好的用户体验,您应该有一个按钮或菜单项来进行启动,该项目应该有一个盾牌。这样用户就不会感到惊讶。如果你以编程方式检测到你需要启动,至少先打个消息框说“我已经检测到你需要安装XYZ,你还好吗?”并在OK上放置一个盾牌,在取消时没有盾牌,如果他们点击OK然后启动显示的应用程序。这将触发UAC提示,用户将期待它。