Como descobrir com que frequência o Windows Seven foi reiniciado?

18

Onde no sistema ou registro devo procurar dados sobre quantas vezes o Windows foi reiniciado? Desejo criar um aplicativo que use essas informações (quantas vezes o Windows foi reiniciado desde o processo OOBE *) para implementar um recurso específico.

Tenho certeza de que a Microsoft pode ter implementado isso em algum lugar. Estou pensando em uma chave de registro ou algo assim.

* OOBE - Out Of Box Experience, este é o processo que ocorre quando você inicializa o Windows pela primeira vez e configura os nomes de usuário, senha e computador.

Diogo
fonte
Através de uma leitura cuidadosa dos logs de eventos, você pode descobrir isso, mas não acho que seja realmente registrado especificamente em algum lugar ... hmm. Espero que eu esteja errado!
Shinrai

Respostas:

17

Cada inicialização e desligamento são registrados nos Logs de Eventos. Abra o Visualizador de Eventos e vá para a seção Logs do Sistema. Se você filtrar esses registros (use o Filter Current Logbotão à direita) pelos números de evento 12 e 13, deverá receber os eventos notificando quando o sistema estiver sendo desligado e inicializado.

A identificação de evento 12 é o sistema inicializando, a identificação de evento 13 é o sistema desligado. Ele também fornece a hora exata em que o evento foi registrado no próprio evento.

Você pode fazer com que seu aplicativo conte o número de eventos com o ID do Evento 12, que deve fornecer o que você deseja.

Connor W
fonte
5
Pense bem, mas há advertências: os logs de eventos podem ser limpos por um usuário e estão limitados a um tamanho máximo, portanto, não necessariamente informa a quantidade total de reinicializações, especialmente se for uma instalação antiga.
rmart
@rmart Não sei se o usuário médio limparia os logs de eventos, mas ambos são pontos justos. Eu acho que usar os dados SMART como mencionado acima é provavelmente uma maneira melhor, mas isso não acontece sem as ressalvas.
Connor W
12

Eu encontrei a resposta.

Localizar sobre:

"HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters\BootId" 

O valor, em decimal, que você verá é o número de vezes que seu sistema já foi reiniciado.

Diogo
fonte
576 vezes, uma pergunta e uma resposta muito interessantes. +1 de mim.
Joe Taylor
7

Aqui está outra maneira: SMART

Atualmente, a grande maioria dos discos rígidos armazena informações SMART. Você pode estar interessado em duas informações: 04 Contagem Iniciar / Parar 12 Contagem do ciclo de energia

Confira o artigo da wikipedia sobre o SMART e, possivelmente, a documentação dos smartmontools.

O smartmontools é um projeto de código-fonte aberto que pode consultar esses dados em uma CLI ou existem outros programas que podem obter esses dados com várias GUIs: lista de ferramentas SMART da Wikipedia

camster342
fonte
Eu acho que esse é provavelmente um método mais confiável do que usar o Visualizador de Eventos, mas também tem suas ressalvas. A menos que a unidade esteja no mesmo computador desde o primeiro dia, sem ser alterada ou usada em outro lugar, você não obterá resultados precisos. Além disso, acho que as unidades mais antigas não oferecem suporte total ao S..MART, portanto, você pode encontrar algumas unidades que registram informações sobre o ciclo de energia e outras que não.
Connor W
@Connor W: Eu estava imaginando que o tipo de disco rígido que não registra informações SMART era muito improvável em uma máquina poderosa o suficiente para executar o Windows 7, mas sim, você está certo de que não pode ser confiou. Assim como visualizador de eventos ....
camster342
E se o usuário usar o modo de espera ou o disco rígido for desligado devido à inatividade?
sinni800
@ Sinni: Essa é a diferença entre o código 04 e o código 12. 04 é o total de rodadas no disco rígido, que incluem modos de espera e economia de energia. 12 é onde o disco rígido perde energia completamente, do PC desligando ou entrando em hibernação.
camster342
2

Confira o Gerenciador de confiabilidade no Windows 7

uSlackr
fonte
3
Isso realmente não informa quando o computador foi inicializado ou desligado.
Connor W
1

Escrevi dois scripts curtos que podem contar o número de vezes que um computador foi ligado.

Infelizmente, não há um log de eventos especificamente para reinicializações, apenas para quando o Windows for iniciado e encerrado.

Esse script pesquisa no log de eventos event 12registrado quando o Windows é iniciado. Em seguida, ele informa quantas vezes contou.

Script VBS: conte quantas vezes o computador foi ligado

count = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'System'" _
& " and EventCode = '12'")
For Each objEvent in colLoggedEvents
count = count + 1
Next
wscript.echo "Number of times operating system has started:   " & count

Script VBS: conte remotamente o número de vezes que o computador foi ligado:

count = 0
strComputer=InputBox ("Enter the network name for the remote computer")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'System'" _
& " and EventCode = '12'")
For Each objEvent in colLoggedEvents
count = count + 1
Next
wscript.echo "Number of times operating system has started:   " & count 

Script VBS de origem - contagem Número de vezes que o computador foi ligado

ovann86
fonte
Se este é o seu site ao qual você está vinculando (os links que você acabou de atualizar), observe que você deve divulgar sua afiliação. Veja superuser.com/help/behavior
slhck
@ slhck - sim, estou fazendo referência ao meu blog pessoal. Eu não estava ciente dessas regras. Existe uma linha padrão que devo usar para deixar claro que estou fazendo referência a conteúdo que também está no meu blog pessoal? Publiquei todas as respostas há muito tempo, quando eu tinha tempo, estou alterando os nomes de domínio e quero atualizar os links antes que o domínio expire. Eu corro meu blog pessoal para registrar coisas que preciso lembrar e compartilhar conhecimento, daí a postagem cruzada entre superusuários.
ovann86
11
Por favor, seja explícito e diga "meu blog" ou algo assim. Desde que você garanta que as respostas reais estejam contidas aqui e as pessoas não precisem sair do site para obter uma solução, tudo bem. A adição de links para detalhes está sempre correta.
Slhck