Chrono Mock
IdiomaPortuguês (Brasil)

Execute um app do Windows em qualquer data - sem mexer no relógio do sistema

Coloque o relógio de um único aplicativo no ano que vem, congele-o, ou acelere o tempo para que um período de teste de 30 dias expire enquanto você faz um café. O resto da máquina continua com a hora real: seu login de domínio, seus certificados e todos os outros programas seguem normalmente.

Depois, ele diz se a substituição realmente funcionou.

Gratuito e de código aberto, GPL-3.0 Portátil ou instalado Sem direitos de administrador para executar Nunca se conecta à internet

Como é uma sessão

O aplicativo vê
2027-12-31
23:59:50
fuso da sessão -05:00
A máquina continua vendo
2026-09-04
18:12:33
fuso do host +02:00
Funciona - a substituição chegou a este processo
Canais de tempo observados até 44 · cada um com sua contagem de chamadas
O painel de sessão do Chrono Mock. O relógio do aplicativo marca 2038-01-19 03:14:14 e o relógio real ao lado marca 2026-09-22 15:50:30, cada um com seu próprio tempo decorrido. Abaixo, as velocidades vão de x1 a x1440 com um botão Freeze, depois os saltos relativos e um salto para uma data digitada; no rodapé, um visto verde com a palavra Works fica ao lado de um botão vermelho para encerrar a sessão.
Uma sessão em andamento. O aplicativo está em 2038, a máquina não, e o veredito diz que a substituição o alcançou.

Por que isto existe

Testar qualquer coisa que dependa de data exige mover o tempo. As duas opções habituais são ruins.

Expiração de licença, períodos de teste, renovações de assinatura, validade de certificados, duração de tokens, fechamentos de fim de mês e de ano, cálculo de juros, lembretes.

Opção 1 - mudar o relógio do sistema

Isso quebra o login de domínio e o Kerberos, invalida certificados TLS a ponto de o navegador parar de funcionar, confunde o Windows Update e faz todos os outros aplicativos da máquina gravarem carimbos de data e hora errados. Em uma máquina ingressada em um domínio, a política de grupo normalmente bloqueia a mudança ou a reverte minutos depois, então o teste nem sequer é repetível.

Opção 2 - esperar

O que significa: não testar. Os casos que dependem de data são pulados, e “a licença nunca expira” vai para o cliente.

O que ele faz

Um processo viaja no tempo. Todo o resto da máquina, não.

Qualquer momento

Uma data e hora específicas, ou uma relativa - +30 days, -1 year.

Correndo, congelado ou acelerado

Velocidade normal, um relógio parado ou um multiplicador inteiro. x1440 transforma um dia em um minuto.

Seu próprio fuso horário

Um deslocamento fixo só para aquele processo, enquanto o fuso do sistema fica exatamente onde estava.

Os processos filhos vão junto

Instaladores e inicializadores criam processos filhos. Sem isso, o teste cobre só metade do que rodou.

Saltos no meio da sessão

Para frente ou para trás - inclusive o salto para trás que um notebook dá depois de ressincronizar com um servidor de horário.

Electron e Chromium também

Por outro mecanismo, porque o relógio deles vive em um renderizador isolado que a injeção não alcança.

O que ninguém mais faz

Como saber se funcionou?

Com qualquer outra ferramenta, você não sabe. O aplicativo inicia, mostra uma data qualquer e você presume que está certo. Mas ele pode ler o relógio por um canal que a ferramenta nunca interceptou - de um servidor, de um banco de dados, por uma camada do ambiente de execução - e aí “o teste passou” não significa nada.

  • →Um veredito antes de o teste de verdade começar: funciona / funciona parcialmente / não funciona
  • →Quais dos 44 canais de tempo foram cobertos e quantas vezes o aplicativo consultou cada um
  • →Quais não foram - ditos com clareza, nunca omitidos
  • →Avisos com as consequências: “este aplicativo lê a hora da rede - a substituição local pode não bastar”

Como funciona a auditoria das fontes de tempo →

Dois minutos com ele

Uma janela para explorar, uma linha de comando para CI. O mesmo motor por trás das duas.

# Executar um aplicativo como se fosse o último segundo de 2027
chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59

# Ver um teste de 30 dias expirar enquanto você faz um café: x1440 é um dia por minuto
chrono run "C:\apps\test.exe" --mode x1440

# Usar um cenário com nome em vez de uma data e gravar a evidência em um arquivo
chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt

A calculadora responde à outra metade do teste de datas - qual data usar:

$ chrono calc --preset year-2038 --zone +00:00
Chrono Mock - date calculator
  preset:   year-2038 - 2038 boundary
  explains: Does the app survive the 32-bit Unix time boundary (2038-01-19T03:14:07Z)?
  base:    2038-01-19T03:14:07
  result:  2038-01-19T03:14:07
  formats:
    ISO date      2038-01-19
    ISO datetime  2038-01-19T03:14:07+00:00
    US            01/19/2038
    PL            19.01.2038
    epoch (s)     2147483647
    epoch (ms)    2147483647000
    FILETIME      137919572470000000
    RFC 1123      Tue, 19 Jan 2038 03:14:07 GMT
  ...
  what this date lands on:
    at or past the 2038-01-19T03:14:07Z 32-bit time_t limit (Y2038)

Comparado com o que você provavelmente usa

Como o RunAsDate, com as partes que faltavam

O RunAsDate intercepta cinco funções do relógio de parede e faz isso bem. Veja onde os dois diferem - e a página completa também diz onde o RunAsDate ainda é a melhor escolha.

 RunAsDateChrono Mock
Executa um app com uma data falsasimsim
Canais de tempo interceptados544 (30 deslocados, 14 contados)
Acelerar o relógionãosim
Fuso horário independentenão documentadosim
Acompanha processos filhosnão documentadosim
Diz se funcionounãosim, por canal
Código-fonte disponívelfreeware, fechadoGPL-3.0

A comparação completa, inclusive onde o RunAsDate vence →

Baixe

Descompacte em qualquer lugar e execute, ou instale o .msi assinado para todas as contas da máquina. Executar não exige direitos de administrador e os zips não gravam nada no registro.