2011-02-23 193 views
3

某些安装应用程序停止(或似乎停止)正常的Windows引导。计算机启动后,用户登录,然后在其他人(如Windows资源管理器)之前启动安装程序。在Windows资源管理器之前启动应用程序

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

例如

  • OS引导
  • 登录
  • 程序运行时,更新等
  • 运行的程序的其余部分(如Windows资源管理器,并不断在启动时运行的)
+1

你想让这个应用程序在浏览器启动之前做些什么? – 2011-02-23 13:36:13

+0

该应用程序将检查更新,安装一些文件,提示用户输入信息,然后继续操作系统启动。 – jSherz 2011-02-23 14:22:34

+2

这是**而不是**这些安装程序的功能。如果你告诉我们你想要完成的任务,肯定有人会告诉你一个更好的方法,而不是试图抢占Windows资源管理器。 – 2011-02-23 14:23:34

回答

0

你可能会包装windows批处理文件.batexplorer.exe

@echo off 
something.exe 
explorer.exe 

但不会真正确保它总是explorer.exe的

开始之前你可能改变一些注册表值来选择另一个“壳”,而不是探险家为。 。

如果这是你真正想要的。

8

如果要在shell启动之前启动应用程序,可以将值添加到注册表中的Userinit值。在这个关键:

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows NT \ CURRENTVERSION \ Winlogon中

有一个名为Userinit值。更改它,以便您的程序在userinit.exe之前运行。例如,外壳/一切初始化之前启动记事本:

C:\ WINDOWS \ SYSTEM32 \ NOTEPAD.EXE,C:\ WINDOWS \ SYSTEM32 \的userinit.exe

使用逗号分开应该开始的程序。

这适用于Windows XP,Vista和7

+0

您通常会得到“拒绝访问”,所有的防病毒软件将禁止该应用程序。 – noober 2015-04-02 11:51:47

+0

根据[tutorial](http://www.tenouk.com/ModuleP1.html),explorer run key在userinit之前设置。然而[这篇古文章](https://support.microsoft.com/en-us/kb/142905)陈述USERINIT负责启动资源管理器shell。在较新的系统上,这仍然是[案例](https://technet.microsoft.com/en-us/library/cc939862.aspx)。 – 2015-10-20 08:51:38

+0

实际上尝试过这种方法,但它[在W7上无法工作](https://social.msdn.microsoft.com/Forums/vstudio/en-US/c810e785-894e-4b4f-be72-a12e35397126/running-a-程序在起动时?论坛= windowsgeneraldevelopmentissues&教授为必填)。但是,这里有人知道它是否适用于Vista之前? – 2015-12-07 10:04:11

0

你应该看一看的Windows Task Scheduler。任务可以计划在用户(特定或任何)登录时执行。 Windows开箱即用的UI说明了使用此标准Windows功能可以实现的功能。

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

我不确定你将能够尽管Windows资源管理器...

3

我还没有尝试过,但我认为这是由注册表项进行

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

还有更多的注册表项 - 看到完整的清单记录在这里: Definition of the RunOnce Keys in the Registry

要不是你使用案例我建议开始您的应用程序作为桌面外壳类似于“vcsjones”提出的解决方案。当程序结束时,您可以拨打explorer.exe开始加载常规桌面。

相关问题