某些安装应用程序停止(或似乎停止)正常的Windows启动。计算机启动,用户登录,然后安装程序在其他人(如Windows资源管理器)之前启动。
如何在我自己的程序中复制此行为?
E.g。
答案 0 :(得分:9)
如果要在shell启动之前启动应用程序,可以在注册表中为Userinit
值添加值。在这个键中:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon
有一个名为Userinit
的值。更改它,以便您的程序在userinit.exe之前运行。例如,要在shell /其他所有其他内容初始化之前启动记事本:
C:\窗口\ system32 \ Notepad.exe的,C:\ Windows \ System32下\的userinit.exe
使用逗号分隔应该启动的程序。
适用于Windows XP,Vista和7。
答案 1 :(得分:4)
我没有尝试过,但我认为这是由注册表项
完成的HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup
还有更多的注册表项 - 请参阅此处记录的完整列表: Definition of the RunOnce Keys in the Registry
但是对于您的用例,我建议将您的应用程序作为桌面shell启动,类似于“vcsjones”提议的解决方案。程序完成后,您可以致电explorer.exe
开始加载常规桌面。
答案 2 :(得分:0)
您可以在.bat
explorer.exe
@echo off
something.exe
explorer.exe
但这并不能确保它始终在explorer.exe之前启动
您可以更改某些注册表值以选择另一个“shell”而不是资源管理器。
如果那是你真正想要的。
答案 3 :(得分:0)
您应该查看Windows Task Scheduler。可以安排任务在用户(特定或任何)登录时执行。 Windows提供的开箱即用的UI说明了使用此标准Windows功能可以实现的功能。
另一个解决方案是编写Windows service(.msi Windows Installer实际上是一项服务)。
我不确定您是否能够阻止 Windows资源管理器......