基本上,我有一个安装了权限的 exe 应用程序(例如,用户在 Vista/Win7 UAC 检查中按下“允许”按钮),然后应用程序启动并将自身设置为自动运行,以便应用程序将自动重新启动再次重新启动计算机后(所有操作都在提升时完成)。自动启动是由用户请求的,而不是对他们强制执行。
此重启指令在注册表中的 CURRENT_USER 部分中设置,如下所示:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
问题是,当计算机重新启动时,Windows 不会让它执行,除非用户再次将其重新授权为提升的进程(即,任务栏中会弹出一个任务栏图标,说明我的 EXE/进程的启动被阻止,并且用户可以使用任务托盘中图标上的菜单启动被阻止的应用程序)。
我想补充一点,我已将清单文件集成到 EXE 中,因此这方面没有问题,并且它在 XML 文件中准确地注册了它的意图。
为什么 Windows 在设计上这样做?如果一个exe被授权一次,那不应该意味着它被永久授权吗?
但我想问的主要问题是,我该如何解决这个问题?想象一下,每次应用程序需要自动运行时,我的用户都必须这样做?
另外,我想避免整个“你的应用程序首先不应该在提升模式下运行”的争论/讨论,或者“没有应用程序需要提升的权限,你需要重写它”的讨论。我可以向您保证,我的应用程序需要提升权限(不幸的是)。如果有兴趣,请在下面提供更多详细信息,无需解释或理解本文中的问题,但包括在内,因为我知道有些人会问)...
额外不必要的阅读:
...事实上,它在 87% 的启动中需要它(取决于用户的操作),并且在 13% 的情况下不需要它(也就是说,所有启动实例的 13%,而不是 13% 的用户( 2013. 我将进行所有这些工作以拆分逻辑上不属于应用程序不同区域的功能 - 即使完成了所有这些工作,我上面提到的问题也没有得到解决(而是稍微最小化或延期)。