Answers:
启动延迟器执行任务:http ://www.r2.com.au/page/products/show/startdelay
代替了Jeffy在Windows XP / Vista / 2008中建议的ping命令,我在批处理文件中使用了timeout命令。
句法: timeout /t seconds
@echo off
rem for 5mins delay..
timeout /t 300
rem starting delayed start programs
start cmd /C "C:\Some\Path\To\A\Program.exe"
start cmd /C "C:\Some\Path\To\A\Shortcut.lnk"
start notepad
PS:如果您不想看到倒计时,可以像这样丢弃输出: timeout /t 300 > nul
timeout
它不能在Windows XP上使用,那就太好了……
创建一个名为“ 5minsdelayStart”的批处理文件:
@回声关闭 rem睡眠300000毫秒(5分钟) ping -n 1 -w 300000 -4 10.0.0.0> NUL 雷姆启动延迟启动程序 启动cmd / C“ C:\ Some \ Path \ To \ A \ Program.exe” 启动cmd / C“ C:\ Some \ Path \ To \ A \ Shortcut.lnk”
延迟5分钟后,将底部的命令替换为您要启动的内容。
将此批处理文件添加到您的启动文件夹。
注意:您可能想改为创建批处理文件的快捷方式,然后设置启动选项以最小化启动批处理文件。无论哪种方式,您都会在后台有一个命令提示符,但至少将其最小化,不会造成太多入侵!
另外,如果由于网络上的某些原因10.0.0.0实际上路由到某个有效地址,则应将该IP地址更改为其他地址(没有路由)。
实际上,两个答案都有其优点。设置固定的时间延迟可能不符合您的最佳利益,因为需求会随着时间而变化。与一次执行通常的“ Wait for Windows”操作一样,立即启动其余所有负载的任何设置延迟都可能更加不便。
如果您有很多项目,我会考虑在批处理中添加一个“继续等待?是/否”的参数 。或者,您可以让它成为基于活动的自动定时扩展。(即等待无键盘活动的时间)。无论哪种方式,除非您全部进行此操作(每个操作都作为一个单独的定时操作),否则您可能会发现在启动后5分钟内全部运行与在开始前全部运行同等或更糟。
我认为,如果这些都是绝对必要的,则最好将它们一次运行,并以1的顺序排列,然后检查是否仍然没有活动,然后运行下一个。当然,只有您知道启动时需要哪些。对于某些快速开/关情节,可能根本不需要某些功能。如果以正确的顺序放置,则在断电之前将永远无法达到这些目标。
另一种可能性是将负载与负载的需求联系起来。如果您不打算上网或使用电子邮件或其他“高风险”活动,则可以考虑不加载AV软件。在这些活动中添加命令“如果尚未运行,请先运行”,可以显着提高本地游戏的速度,或者无需为每次移动而检查和重新检查的其他任何东西。只需将启动程序绑定到需要它的程序即可。
要考虑的另一种选择是设置尽可能多的内容以“作为服务运行”,因为与启动正常的“启动程序”序列相比,激活该功能通常花费的时间更少。
仅供参考,多年来,我已经使用了一种非常有用的实用程序,并将其提供给许多人,称为“ StartMan”。在Google和Free上很容易找到它,我敢肯定还有其他实用程序。从Win98到Win7,我尝试过的每个Windows版本都可以使用它。它使您可以对启动程序进行更多控制,而不必对启动配置进行任何永久性更改,并且可以轻松撤消那些无效的配置。
可以使用Windows脚本代替命令脚本。它具有Windows XP中应支持的Sleep()方法。它在没有任何可见窗口的情况下运行,并允许配置隐藏,正常或最小化的已执行程序窗口的可见性。
在使用Windows脚本系统之前,应检查其是否配置为执行* .vbs文件。
下面是示例脚本,该脚本必须放在扩展名为“ VBS”的文件中,例如“ DelayedStart.vbs”,并放在“开始菜单”的“启动”文件夹中:
Set Shell = WScript.CreateObject("Wscript.Shell")
WScript.Sleep(5000)
Shell.Run """C:\Program Files\Debug\MemInfo\meminfo.exe""", 2, False
Shell.Run """C:\Windows\System32\taskmgr.exe""", 2, False
rem True=wait until exits
rem Window: 0=hidden, 1=normal, 2=minimized
rem Shell.Run """notepad.exe"" ""argument with space""", 1, False
rem Shell.Run "notepad.exe """ & WScript.Arguments.Item(0) & """", 1, True
对于所有说“ First remove them from run at startup.
”的人,我必须说:
并非所有应用程序都可以运行,某些应用程序会在运行时重新添加到注册表中。
因此,除非在终止应用程序后删除注册表项,否则删除启动注册表项并不是解决在下次启动时不运行它的解决方案。
我发现的最坏情况(扫描的驱动程序)是在启动某个应用程序时启动的,此类应用程序没有GUI,但会通过“系统”进程将其自身锁定,因此除非您杀死“系统”,否则无法将其杀死(警告这样做) = BSOD),如果锁/钩注册表更改,也是如此,因此删除密钥后它会再次出现,等等。由于无法杀死应用,您将无法避免它在下次启动时运行。仅解决方案有效(无格式):从Linux启动并删除此类应用程序,再也不会重新安装它了……但是由于它是“驱动程序”,因此一旦USB开启(即使未插入设备),它也会再次安装。 ),因此您需要删除所有USB条目,驱动程序,文件等,在Linux上重启并删除该应用。
我了解“普通”应用程序,这非常容易...只需删除lauch注册表项并将此类命令放在.lnk文件(快捷方式)上,然后从运行.lnk的脚本中运行它们就可以在它们之间进行睡眠。 ..或在1分钟内有一些差异,在5分钟内有其他差异,依此类推...对其进行脚本编写并并行调用所有脚本,这样每个人都可以等待不同的时间,等等。
但是如何处理那些读取它们的人(java Updater等),却在它们运行时,关闭时,或更糟糕的情况下……一旦它们在注册表中检测到丢失的键就运行了等
有些可以选择不自动启动,而有些则没有。
对于“常态”来说,它非常好,并且效果很好...对于这种情况,比如说“丑陋”,那该怎么办?没什么,除了在应用程序被杀死/退出后关机后删除注册表项。
我没有看到任何程序可以让您配置要在关闭的最后阶段删除的kay注册表项,我看到有人在关闭的早期阶段进行了操作……但是无法控制其他应用程序仍在运行(可以(未设置关闭顺序),因此如果某个键仍在运行,则只要删除reg键,就可以重新添加该键。
我有自己的解决方案(我必须承认,这很讨厌):我没有管理员权限就锁定了此类注册表项,仅针对特定用户我具有使用权限,因此任何具有管理员权限的应用程序(非以系统特殊用户身份运行)都是如此。无法修改...警告某些应用程序,因为它们无法更改此类注册表项,它们在启动时将拒绝继续运行,因此您必须运行4步脚本来启动它们...设置权限以允许运行该应用程序然后稍等片刻,将权限设置为不允许(管理员)但允许特定用户,删除密钥(由于脚本权限是用户权限,因此将被允许)...然后在应用再次尝试重新添加时它将无法运行,如果幸运的话,该应用不会突然退出,否则...您必须让注册表在那里关闭直到关闭...对于这种情况,请添加计划任务以删除注册表项...请记住,也可以通过启动带有说明的.reg来删除注册表项,而无需创建应用程序即可删除它。
等等,我希望某些免费软件工具能够实现这些功能,但是我仍然找不到人,也没有付费的人。