检测系统重启并启动应用程序

Detect System reboot and start an App

本文关键字:应用程序 启动 重启 检测系统      更新时间:2023-10-16

我们有一个exe,它实际上检查文件夹的内容,然后启动windows服务对该文件夹中的文件进行一些处理。所以,我们把这个exe作为系统启动程序的一部分,所以每次系统重启/启动时它都会运行。

现在用户非常恼火,因为他每次重启都会弹出UAC。但是我们需要有这个exe的管理员权限,因为它启动了一个windows服务。因此,我研究并找到了一些解决这个问题的方法。这个和这个但无法决定哪一个更好,更不容易受到安全影响。另一个潜在的解决方案可以在。exe本身的代码中检测系统启动,如果我们在目标文件夹中有任何内容,那么只要求用户提供UAC并启动windows服务。否则就不要运行exe。我不确定如何在c++中做到这一点。任何提示都会很有帮助。如果有更好的解决方案,请随时欢迎。

您可能想在这里使用任务调度程序。
只需在安装过程中创建一个任务,将"当计算机启动时"作为触发器,并设置"以最高权限运行"安全选项。

问题是您混淆了系统和用户会话。

如果这些文件的处理是代表用户完成的,那么它可能不应该由服务完成。如果两个用户想要处理他们的文件怎么办?服务应该为此使用什么安全上下文?显然,你不需要管理员权限来处理一些用户文件。

如果服务正在执行一些系统级任务,它不应该依赖于用户。事实上,在启动时运行表明你想要这种模式。(用户小程序在登录时启动,而不是在重启后启动)。因此,您设计中的主要问题似乎是您试图在错误的时刻运行应用程序(带有UI),这需要太多的权限(导致UAC)。重新设计服务,使其完成所有需要管理员权限的任务,并在安装服务时将其设置为自动启动。这仍然需要在安装时使用UAC,但这是期望使用UAC的时候。