设置应用程序的管理员权限

时间:2013-09-23 06:42:45

标签: windows winapi visual-c++ uac shellexecute

我在 Visual Studio 2010 中创建了 win32应用程序。应用程序是一种安装程序,它将exe复制到system32文件夹。

每次重新启动窗口时都会执行安装程序复制的exe。我已经在注册表中为它创建了一个条目,现在我遇到的问题是我想在每次执行时以管理员身份运行该exe。

我可以更改exe的属性以管理员身份运行,但它仅适用于特定系统,我已经提到我的应用程序是一个安装程序,所以在每个系统上更改权限都非常繁忙。

请指导我如何解决这个问题

1 个答案:

答案 0 :(得分:1)

首先,请注意,为用户而不是可执行文件指定了权限和权限。

为了提升可执行文件的运行,通常需要向可执行文件添加一个应用程序清单,指定requireAdministrator执行级别。如果用户不是管理员,或者找不到管理员来执行过度抬高,则此类应用程序将无法运行。

现在,这可能对你没什么帮助。如果要在登录时进行提升(假设您的注册表设置为HKLM\Software\Microsoft\Windows\CurrentVersion\Run),则每次程序启动时都会向用户显示UAC提升对话框。我无法想象这种行为是可取的。

避免所有这一切的最简洁方法可能是将您的应用程序转换为作为服务运行。服务在会话0中运行,不受UAC的约束。只需在具有足够权限的用户帐户下运行该服务。

最后一点,我不能强调。您不应该将文件复制到system32。那是系统文件夹,它属于系统。