【问题标题】:Persistence for high mandatory level application - windows高强制级别应用程序的持久性 - windows
【发布时间】:2019-03-28 13:08:21
【问题描述】:

我正在编写需要以高强制级别运行并且需要在每次操作系统启动时运行的应用程序。我试图将它放在注册表和启动目录中的运行中,但重新启动后它没有运行。我使用 Winapi 从 C 代码中执行此操作,该代码正在运行,当我将它与常规权限应用程序一起使用时,它可以正常工作。我将链接器中的“UAC 执行级别”选项更改为最高可用。

如何让应用在每次重启时都以高强制级别运行?

*注意:我不会尝试绕过 UAC 或通过漏洞利用提升到高权限,我希望它在 UAC 中是合法的并在每次重启时运行。

【问题讨论】:

  • 所以,如果我理解正确,您是在问“我怎样才能让程序在启动时自动以highestAvailable 运行而无需等待用户同意”?
  • 不,我希望它得到用户的同意,我希望它是合法的并提示 UAC 窗口并且用户需要按是。它是一个合法的应用程序,不是恶意软件或其他东西,我不想让它绕过 UAC
  • 感谢您的澄清
  • 不要将清单添加到您的 exe,注册它,然后使用 ShellExecuteEx 重新启动自己

标签: c windows winapi persistence uac


【解决方案1】:

您可以:

  • 创建服务,或
  • 配置任务计划程序以创建登录应用程序(例如here)。 IPrincipal 接口有一个method 来设置管理员要求。

这样,您将使用 UAC 提示注册您的应用一次,然后它将在提升模式下运行每次重新启动。

【讨论】:

  • 感谢您的回答!我可以只使用注册表项还是它不支持具有 UAC 的高强制应用程序?
  • @BlackMamba - 在RunOnce 下注册的应用程序以管理员权限运行。但资源管理器将等到此类应用退出 - 因此您需要从中执行 self 的新副本并重新计算此键的值
  • @BlackMamba 为什么您只想使用注册表项?你介意分享原因吗?
  • @RitaHan-MSFT 它似乎更容易和舒适,但我已经使用任务调度程序来完成它并且它可以工作。这有点难,COM 对象的代码很长,但它完成了这项工作。
  • @BlackMamba 感谢分享。如果它回答了您的问题,您可以accept the answer
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-29
  • 2017-09-15
  • 2018-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多