如何判断Windows和所有启动程序何时完成启动?


37

我的机器(Windows 7 64位)大约需要3-4分钟才能完全启动。是否有任何方法可以通过使用Windows内置功能或任何第三方应用程序来指示启动完成,某种声音/弹出窗口?

我要求Windows和所有启动程序都完成启动后

我通常有时坐在机器前等待,这样的时间可以更好地用作速成。

硬盘指示灯停止闪烁时,外观如下:

在此处输入图片说明


2
登录过程之后...所有的后台过程等。整个shebang
Firee 2014年

3
您可能需要添加“完成启动”的含义:已加载所有程序或仅加载了Windows OS。
zurfyx

3
我敢肯定,没有确切的答案。一些后台进程在启动之前会等待PC变为空闲状态,而某些进程会等待一段固定的时间。很难预测它FooUpdater.EXE会睡7分钟。
MSalters 2014年

2
也许相反,检测繁忙的进程何时最终变为空闲状态对您有用吗?如果是这样,Windows任务管理器的“空闲”任务触发器是否不够?
Ƭᴇcʜιᴇ007

2
3-4分钟的时间真的足够“傻瓜”吗?oO
Jason C

Answers:


25

这里有几个可能有用的答案,但是我认为还没有提出两个重要的观点:

  1. 不可以,无法以编程方式确定Windows和所有启动程序已完成引导。从本质上讲,这是一个暂停问题,没有程序可以回答“对于这个任意程序,我们应该在什么时候说它已经被加载?”的问题。

  2. 您要解决的实际问题是什么? 这里的所有答案都试图为您的问题找到解决方案,但是问题本身感觉好像它缺少一些重要信息。我们要解决您的问题,而不仅仅是回答问题

再次阅读您的问题,然后按照您所说的去做,我的回复将是以下之一:

  • 只是不用担心,开始使用您的计算机。前景任务具有优先级,除非您执行了一些非常不寻常的操作,否则后台任务是否正在运行都无关紧要。

要么:

  • 手动观察系统几次,然后根据您拥有的任何指标计算出在系统“就绪”之前花费的最长时间。获取一个小的计时器程序或脚本,并将其添加到系统的启动中。您选择的时间过去后,它可以显示消息或播放声音。

这可能不会直接回答您当前的问题,但希望会有所帮助。


3
这是IMO的一个最佳答案(也是技术上最正确的答案),原因之一是IMO:它突出了定义“所有启动程序均已完成启动”的含糊之处。我同意暂停问题是非常相关的,但仅在启动的过程即将完成的情况下。尽管可以在启动后监视各种程序的CPU使用情况,并使用预定义的阈值来指示计算机何时“完成启动”,但这仅涵盖了一小部分情况(尤其是,加载性能主要受CPU限制的进程) 。
突破

@Breakthrough好点并编辑,谢谢。我实际上是在试图简洁地表达一个想法,即对于启动时执行的任何给定程序,它可能会执行许多不可预测的事情:(1)启动然后终止,(2)启动并继续运行,(3)启动并产生其他处理,然后执行(1)或(2)。由于加载延迟以及某些程序甚至可能要等到系统“空闲”才能开始进行其他工作时,即使将“完全”的想法基于资源消耗也不是很理想。
尼克

令人惊讶的是,“ idle”或“ booted”标志对于持久性/守护进程是多么有用(caveat是,只有在您正在等待的每个进程中实现它才有用。)。
突破

@Breakthrough如果我没记错的话,linux' systemd有这个,原则上,在所有其他人都已经通过其依赖机制启动之后,一个人可以启动服务。但是,您必须手动指定所有这些选项(我的systemd知识不是那么好)。
rubenvb 2014年

@Nick感谢您尝试找到解决方案背后的原因,它实际上提供了新的视角。我以为应该有一个非常简单的解决方案,但事实并非如此……目前,我将使用一个小的计时器程序,该程序使我知道指定的时间已结束。
Firee

11

当Windows真正完成时,为什么不使用Windows Task Scheduler和Event ID 100播放自定义声音呢?

在触发器下,选择“发生事件”,然后

  • 日志:LogMicrosoft-Windows-Diagnostics-Performance / Operational
  • 资料来源:诊断性能
  • 赛事ID:100

在“操作”下,选择“启动程序”

  • 程序/脚本: "%ProgramFiles(x86)%\Windows Media Player\wmplayer.exe"
  • 添加参数: "%windir%\Media\Windows Logon Sound.wav"

    Event ID: 100   
    Decription: Windows has started up
    

    事件ID 100:Windows诊断性能


1
我要求Windows和所有启动程序都完成启动后
Firee

2
FWIW:在给出此答案时,OP仅提到“ Windows启动”。第二部分,包括所有启动程序,是在以后添加的!
nixda 2014年

匿名用户的评论:如果启动时间有点慢或非常慢,则此方法非常有效。简单而准确。但是,如果您的启动时间很快,大约不到3分钟(或在Windows设计定义的限制内),则不会记录任何事件100,因此不会播放声音
nixda


8

我已经安装了很长时间使用的免费程序,Soluto:https//www.soluto.com/

我只是一个用户,没有联系。

这个对我有用。

它进行倒计时,并允许您选择要在引导时加载的内容。

它还允许您延迟启动。


它可以离线工作吗?
Firee

该站点/公司现在提供了具有远程安全功能的移动应用程序;我认为该域现在由其他人拥有。
mbuc91 '16

6

在启动时运行此Python脚本。当CPU使用率连续5秒低于20%时,它将播放启动声音:

import subprocess
import time

# set these to whatever works for you
# sound will play when cpu load has been < IDLE_PERCENT for IDLE_TIME consecutive seconds
IDLE_TIME = 5
IDLE_PERCENT = 20

# you can execute any program you want by changing the alert function below


def get_load():
    output = subprocess.check_output('wmic cpu get loadpercentage', shell=True)
    load = output.split()[1]
    return int(load)

def alert():
    subprocess.call([
        r"c:\Program Files (x86)\Windows Media Player\wmplayer.exe",
        r"c:\Windows\Media\Windows Logon Sound.wav"])


idleSeconds = 0

while idleSeconds < IDLE_TIME:
    load = get_load()
    if load < IDLE_PERCENT:
        idleSeconds += 1
    else:
        idleSeconds = 0

    time.sleep(1)

alert()

2

您可以为启动添加声音。

您可以延迟启动过程并使声音效果首先执行。工具 启动延迟器会执行此操作。

在此处输入图片说明


这将检测启动是否完成,还是我必须放置一个理想的计时器?
Firee

@Firee不需要计时器,只需使用“自动延迟”选项
stderr

1

这可能不是很有效,但是很便宜。

我通常会查看硬盘活动指示灯(您可以在外壳上通过数据库图标来识别它),直到指示灯稳定并不频繁闪烁,然后我知道我现在可以使用PC了而不会出现任何滞后。硬盘通常是PC的瓶颈,如果不大量使用硬盘,则您仍有工作空间。

希望能有所帮助。


1
那是众所周知的,但我必须坐着等……
Firee

4
不用了 您可以委托房子里的任何人为您做到这一点。这简单!。:D
MadeOfAir 2014年

0

我从来没有亲自使用过它,但是Windows Task Scheduler将允许您创建一个被触发以运行“启动时”或“登录时”的任务。您可能可以安排任务以运行Powershell脚本来访问.NET Framework 的Console.Beep()方法。您甚至可以将它变成一个不错的曲调。

嗨脚本专家!博客

[console]::beep(500,300)

更改第一个数字的值以更改音高(听不到190或高于8500的任何声音),更改第二个数字的值以更改音长

编辑: 事实证明,根据MSDN .NET文档,Console.Beep()方法可能不适用于64位系统。在PowerShell脚本中测试了蜂鸣声,并且工作正常。

您可能还希望检查启动过程。您可以通过运行msconfig并单击服务来做到这一点。您也可以使用Sysinternals工具“自动运行”。


0

Windows文档按加载顺序排在最后的是注册表currentuser / runOnce(在启动文件夹之后)...但是,无论加载顺序如何,某些程序都可能花费很长的启动时间。

因此,也许查看批处理文件中的CPU活动可能是一个很好的解决方案:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set cpuLimit=15
set /a lowCount=0

for /l %%i in (1,1,30) do (
   for /F %%c in ('wmic cpu get loadpercentage ^| findstr "[0-9]"') do (
       echo %%i cpu-Load: %%c  ...lowCnt: !lowCount!
      if %%c gtr %cpuLimit% ( set lowCount=0
      ) else ( set /a lowCount+=1
         if !lowCount! gtr 10 (
            ECHO BEEEEEEP ... mplay32 beep.wav... or something
            exit
         )
      )
   )
   ping -n1 127.0.0.1 >NUL
)

...和BEEEPing在发现最近10次cpu-load-check中有cpu-load低于15%之后。可以通过启动文件夹中的链接启动此批处理文件,或者最好在注册表HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run中启动


0

你写了:

«我的机器(Windows 7 64位)大约需要3-4分钟才能完全启动...»

包括对用户帐户的访问在内,“正常”启动大约需要30秒。出了点问题,必须解决。为了修复它,您必须获取数据。我建议您使用两个实用程序来解决此问题:

1)自动运行

使用此程序,您可以检查在引导过程中加载的每个进程,程序和驱动程序。Tka护理:这是一个非常强大的工具,除非您知道自己在做什么,否则不要删除项目。但是您可以取消选中(禁用)某些启动登录程序...

2)系统资源管理器

使用此工具,您可以查看所有启动的进程及其历史,直到启动系统资源管理器为止。也可以出于安全目的扫描所有这些流程(与流程数据库相比。)

首先检查一下,他们会给我们一些反馈。

您还可以在Windows管理工具中检查启动时的服务services.msc以及设备的状态devmgmt.msc(缺陷设备的黄色三角形,PIO模式下的硬盘而不是DMA的硬盘等等)...

希望能有所帮助。让我们知道


我担心的不是启动时间这么长的原因。我可能有很多启动程序等。。。整个启动过程完成后,我只需要指示一下,包括Windows,登录,所有启动程序等
Firee 2014年

只需与任务管理器一起检查...当CPU处于空闲状态时,就完成了。您的PC需要3.4分钟,对吗?:-/
climenole 2014年

硬盘指示灯停止闪烁后,它就是这种样子i.stack.imgur.com/nVToB.png
Firee 2014年

“有些错误,必须解决”。或者,它只是反病毒......非常非常彻底地做自己的工作
托尔比约恩Ravn的安德森

@ThorbjørnRavnAndersen也许吧。正如我说的那样,我担心的不是花多长时间,我只需要知道它何时完成即可开始使用系统,而不会因后台进程仍在启动中而造成任何延迟。
Firee

0

我一直在寻找这样的东西,我找到了答案

我可能稍后会发布实际的代码,但是在这里

http://msdn.microsoft.com/zh-CN/library/aa394226%28v=vs.85%29.aspx

只需将最后一部分的内容另存为vbs文件并运行它,就可以轮询每个系统事件并提取其显示的消息,非常简单。

查找启动顺序完成的方法是仅运行此脚本,直到事件ID为“ 100”为止,该事件ID对应于系统事件中的启动完成过程

请参阅:http : //www.howtogeek.com/72420/how-to-use-event-viewer-to-find-your-pcs-boot-time/

因此,当您启动该脚本时,它将轮询所有事件并等待事件ID为100并提醒您。可以在任何脚本工具(例如autoit)中使用相同的命令

只想让所有人都知道。因为当我搜索这个。我发现的只是Windows Task Scheduler的想法或最好的解决方案。实际上,由于某些奇怪的原因,solutto不久前就停止在我的x64 pc上工作。所以我想自己做一个脚本,将我引向最终解决方案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.