【问题标题】:Setting Admin privileges for an Application为应用程序设置管理员权限
【发布时间】:2013-09-27 23:46:10
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我不认为你可以这样做,因为它可能存在安全问题,如果你可以这样做,你可以编写一个程序来删除系统文件并授予它管理员权限。我很想知道这是否可以通过编程方式发生。

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


【解决方案1】:

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

为了提升可执行文件的运行权限,您通常需要将应用程序清单添加到指定 requireAdministrator 执行级别的可执行文件中。如果用户不是管理员,或者找不到管理员执行过肩抬高,这样的应用程序将无法运行。

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

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

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

【讨论】:

  • 感谢您的热心回复,我已将清单写入我的可执行文件,但仍然无法正常工作,即使它没有提示对话框,我也无法理解原因
  • 没有信息,我无法为您提供帮助。清单中的 requireAdministrator 设置已知有效。
  • 让我分享我的 manifest.xml
  • 那是不完整的。这里有一个例子:codeproject.com/Articles/17968/…
猜你喜欢
  • 2012-10-13
  • 2012-12-06
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
  • 2010-11-27
相关资源
最近更新 更多