应用程序在 Windows 资源管理器之前启动

问题描述 投票:0回答:5

某些安装应用程序会停止(或似乎停止)正常的 Windows 启动。计算机启动,用户登录,然后安装程序先于其他程序(例如 Windows 资源管理器)启动。

我如何在自己的程序中复制这种行为?

例如

  • 操作系统启动
  • 登录
  • 程序运行、更新等
  • 其余程序运行(例如 Windows 资源管理器和启动时运行的程序)
windows startup windows-explorer
5个回答
12
投票

如果要在 shell 启动之前启动应用程序,可以向注册表中的

Userinit
值添加一个值。在这个键中:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

有一个名为

Userinit
的值。更改它,以便您的程序在 userinit.exe 之前运行。例如,要在 shell/其他所有内容初始化之前启动记事本:

C:\WINDOWS\system32 otepad.exe,C:\Windows\system32\userinit.exe

使用逗号分隔应启动的程序。

这适用于 Windows XP、Vista 和 7。


4
投票

我没有尝试过,但我认为这是由注册表项完成的

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup

还有更多的注册表项 - 请参阅此处记录的完整列表: 注册表中 RunOnce 键的定义

但对于您的用例,我建议您将应用程序作为桌面 shell 启动,类似于“vcsjones”建议的解决方案。当您的程序完成后,您可以调用

explorer.exe
开始加载常规桌面。


1
投票

您应该查看 Windows 任务计划程序。可以安排任务在用户(特定或任何)登录时执行。 Windows 提供的开箱即用的 UI 说明了使用此标准 Windows 功能实际上可以做什么。

另一个解决方案是编写一个 Windows 服务(.msi Windows Installer 实际上是一个服务)。

我不确定您是否能够阻止 Windows 资源管理器...


0
投票

您可以将 Windows 批处理文件

.bat
包装在
explorer.exe

周围
@echo off
something.exe
explorer.exe

但这并不能真正确保它总是在 explorer.exe 之前启动

您可以更改某些注册表值来选择另一个“shell”而不是资源管理器。 .

如果这就是您真正想要的。


0
投票

https://github.com/sylveon/EarlyStart

打开会话时在 Windows 资源管理器之前启动程序。

© www.soinside.com 2019 - 2024. All rights reserved.