如何强制应用程序以管理员权限运行

时间:2013-12-11 21:19:08

标签: windows vb6 admin inno-setup

我确信之前有人问过并回答过,但我找不到我要找的答案。我们有一些旧的VB6应用程序,我试图在Windows 7上运行这些应用程序。它们在UAC关闭时运行良好,但是当在默认“级别”运行UAC时,应用程序生成(遇到)“请求的操作需要提升”错误。我意识到我可以a)关闭UAC或b)将程序属性设置为“以管理员身份运行此程序”;但是......这些都不可取。我们希望PC拥有正常的UAC,我们不希望“用户访问控制:你想让程序等等吗?”每次我们的程序启动时出现的消息框。 我们的应用程序是一个交钥匙类型的程序,客户打开PC,我们的应用程序启动。当我为“Startup”文件夹中的应用程序选择“以管理员身份运行此程序”时,它甚至不再启动(作为自动启动应用程序,我仍然可以从资源管理器运行它(并获取UAC)盒))。

所以..有什么方法可以告诉Win7以管理员身份运行这个程序,不再要求任何东西。

我尝试了一个简单的清单(http://msdn.microsoft.com/en-us/library/bb756929.aspx),但实际上并没有改变任何内容。

我真的在寻找可以从Inno设置中执行的某些设置,我可以更改某些设置,这将允许我们的程序读取/写入Registry,启动COM对象并执行所有正常的操作我们曾经能够做到。

问题不在于以管理员身份运行安装程序,而是以管理员身份运行我们安装的内容(没有右键单击,也不是每次都“确定”)。

1 个答案:

答案 0 :(得分:3)

您想要做的事情与UAC的运作方式背道而驰,当UAC成为强制性要求时,您的要求与其他数十万人的要求实际上没有什么不同。

您想要的是完全可能的,但它需要您坐下来重新考虑您的应用程序架构。您需要做的是将需要管理员级别访问权限的功能隔离到Windows服务中,然后将服务设置为在Local System帐户下运行(可以说比普通计算机管理员稍微有点特权)。当然,您的服务也可以设置为在机器启动时自动运行。这意味着服务中的代码获得提升权限,而不会提示用户。

您的其他功能可以保留在常规应用中,在普通用户凭据下运行。设置为自动启动的应用程序在服务之后大量启动,因此您的常规应用程序启动时应该可以使用您的服务。