Files
NoIdle/SOLUCAO_AUTOSTART.md
root 6086c13be7 feat: Implementação completa do NoIdle - Cliente, Backend e Scripts
- Cliente Windows com modo silencioso e auto-start robusto
- Backend Node.js + API REST
- Frontend Next.js + Dashboard
- Scripts PowerShell de configuração e diagnóstico
- Documentação completa
- Build scripts para Windows e Linux
- Solução de auto-start após reinicialização

Resolução do problema: Cliente não voltava ativo após reboot
Solução: Registro do Windows + Task Scheduler + Modo silencioso
2025-11-16 22:56:35 +00:00

9.0 KiB

🔧 Solução: NoIdle não Inicia Automaticamente Após Reinicialização

Problema

O cliente noidle.exe não permanece ativo em segundo plano após reiniciar a máquina, mesmo após instalação e ativação com a chave de ativação.

Solução Implementada

Foram implementadas 3 camadas de proteção para garantir que o NoIdle inicie automaticamente:

1. Registro do Windows (Método Primário)

  • Adiciona entrada em HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
  • Inicia automaticamente quando o usuário faz login
  • Executa com parâmetro --silent para rodar em segundo plano

2. Task Scheduler (Método Secundário/Backup)

  • Cria tarefa agendada NoIdle_Monitor
  • Mais confiável que o Registry
  • Reinicia automaticamente se o processo falhar (até 3 tentativas)
  • Não para se o computador estiver na bateria

3. Modo Silencioso (Melhoria no Cliente)

  • Suporte ao parâmetro --silent ou --minimized
  • Executa sem interface gráfica
  • Não requer interação do usuário
  • Roda completamente em segundo plano

🚀 Como Aplicar a Solução

Opção 1: Para Novas Instalações

O cliente atualizado (CLIENTE_CORRIGIDO.py) já configura tudo automaticamente:

  1. Instale o NoIdle
  2. Ative com a chave de ativação
  3. O auto-start será configurado automaticamente

Pronto! O NoIdle agora iniciará automaticamente após reinicialização.


Opção 2: Para Clientes Já Instalados

Se você já tem o NoIdle instalado e ele NÃO está iniciando automaticamente após reinicialização, use um dos scripts abaixo:

Script 1: Configurar Auto-Start (Recomendado)

# Baixe e execute no PowerShell (como usuário normal):
.\CONFIGURAR_AUTOSTART_NOIDLE.ps1

O que este script faz:

  • Configura Registro do Windows
  • Configura Task Scheduler
  • Verifica se já está configurado
  • Pergunta se deseja iniciar agora

Script 2: Verificar e Corrigir Problemas (Diagnóstico Completo)

# Baixe e execute no PowerShell:
.\VERIFICAR_E_CORRIGIR_NOIDLE.ps1

O que este script faz:

  • 🔍 Verifica instalação
  • 🔍 Verifica configuração (Device ID)
  • 🔍 Verifica se está em execução
  • 🔍 Verifica auto-start (Registry)
  • 🔍 Verifica auto-start (Task Scheduler)
  • 🔍 Testa conectividade com API
  • 🔍 Verifica Firewall
  • 🔍 Verifica logs de erros
  • Corrige automaticamente todos os problemas encontrados

Correção Automática:

.\VERIFICAR_E_CORRIGIR_NOIDLE.ps1 -AutoFix

📋 Verificação Manual

Verificar se o NoIdle está rodando

Get-Process -Name "NoIdle" -ErrorAction SilentlyContinue

Resultado esperado:

  • Se aparecer um processo, está rodando
  • Se não aparecer nada, NÃO está rodando

Verificar auto-start no Registro

Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "NoIdle"

Resultado esperado:

NoIdle : "C:\Program Files\NoIdle\NoIdle.exe" --silent

Verificar Task Scheduler

Get-ScheduledTask -TaskName "NoIdle_Monitor" -ErrorAction SilentlyContinue

Resultado esperado:

  • State: Ready ou State: Running
  • Se retornar erro, Task Scheduler não está configurado

Testar conectividade com API

Invoke-WebRequest -Uri "https://admin.noidle.tech/api/devices/heartbeat" -Method POST -Body '{"device_id":"TEST"}' -ContentType "application/json"

Resultado esperado:

  • StatusCode: 200 = API está acessível
  • Erro = Problema de rede/firewall

🔧 Correção Manual (Se os Scripts Falharem)

Passo 1: Configurar Registro do Windows

$RegKey = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run"
$ExePath = "C:\Program Files\NoIdle\NoIdle.exe"
$Command = "`"$ExePath`" --silent"

Set-ItemProperty -Path $RegKey -Name "NoIdle" -Value $Command -Type String -Force

Passo 2: Criar Task Scheduler

$ExePath = "C:\Program Files\NoIdle\NoIdle.exe"

$action = New-ScheduledTaskAction -Execute "`"$ExePath`"" -Argument '--silent'
$trigger = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive -RunLevel Limited
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 1) -ExecutionTimeLimit (New-TimeSpan -Days 0)

Register-ScheduledTask -TaskName "NoIdle_Monitor" -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Description "Monitora atividades do usuário para o sistema NoIdle" -Force

Passo 3: Iniciar manualmente

Start-Process -FilePath "C:\Program Files\NoIdle\NoIdle.exe" -ArgumentList "--silent" -WindowStyle Hidden

🧪 Como Testar

Teste 1: Iniciar Manualmente

# Parar processo atual (se estiver rodando)
Stop-Process -Name "NoIdle" -Force -ErrorAction SilentlyContinue

# Iniciar em modo silencioso
Start-Process -FilePath "C:\Program Files\NoIdle\NoIdle.exe" -ArgumentList "--silent" -WindowStyle Hidden

# Aguardar 3 segundos
Start-Sleep -Seconds 3

# Verificar se está rodando
Get-Process -Name "NoIdle"

Resultado esperado: Deve aparecer o processo NoIdle.


Teste 2: Testar Após Reinicialização

  1. Configure o auto-start (usando scripts acima)
  2. Reinicie o computador
  3. Faça login no Windows
  4. Execute:
# Aguardar alguns segundos após login
Start-Sleep -Seconds 10

# Verificar se está rodando
Get-Process -Name "NoIdle"

Resultado esperado: NoIdle deve estar rodando automaticamente.


📊 Logs e Diagnóstico

Verificar logs do Task Scheduler

  1. Abra o Task Scheduler (Agendador de Tarefas)
  2. Navegue até: Task Scheduler LibraryNoIdle_Monitor
  3. Clique na aba History (Histórico)
  4. Procure por erros ou execuções bem-sucedidas

Verificar Event Viewer

# Ver erros relacionados ao NoIdle nos últimos 7 dias
Get-EventLog -LogName Application -Source "*NoIdle*" -After (Get-Date).AddDays(-7) -ErrorAction SilentlyContinue | Where-Object { $_.EntryType -eq "Error" }

🔍 Troubleshooting

Problema: "NoIdle inicia mas fecha imediatamente"

Causa: Provavelmente o Device ID não está configurado.

Solução:

  1. Execute o NoIdle sem --silent pela primeira vez
  2. Insira a chave de ativação
  3. Após ativação, ele criará o arquivo de configuração
  4. Depois pode usar --silent

Problema: "Task Scheduler não funciona"

Causa: Pode ser permissão ou política de grupo.

Solução:

  1. Use apenas o método do Registry (funciona sem admin)
  2. Verifique se o usuário tem permissão para criar tarefas agendadas
  3. Consulte o administrador do sistema

Problema: "NoIdle não consegue conectar à API"

Causa: Firewall, proxy ou rede corporativa bloqueando.

Solução:

  1. Verifique se https://admin.noidle.tech está acessível
  2. Adicione exceção no firewall
  3. Configure proxy se necessário
  4. Contate o administrador de rede

Problema: "Quero remover o auto-start"

Solução:

# Método 1: Usar o script
.\CONFIGURAR_AUTOSTART_NOIDLE.ps1 -Remove

# Método 2: Manual
Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "NoIdle"
Unregister-ScheduledTask -TaskName "NoIdle_Monitor" -Confirm:$false

📞 Suporte

Se o problema persistir após seguir todos os passos:

  1. Execute o script de diagnóstico e salve a saída:

    .\VERIFICAR_E_CORRIGIR_NOIDLE.ps1 | Out-File -FilePath "diagnostico.txt"
    
  2. Verifique se o executável está correto:

    Get-Item "C:\Program Files\NoIdle\NoIdle.exe"
    
  3. Verifique se a configuração existe:

    Get-Content "$env:APPDATA\NoIdle\config.json"
    
  4. Envie as informações para o suporte.


📚 Arquivos Relacionados

  • CLIENTE_CORRIGIDO.py - Cliente Python atualizado com modo silencioso
  • CONFIGURAR_AUTOSTART_NOIDLE.ps1 - Script para configurar auto-start
  • VERIFICAR_E_CORRIGIR_NOIDLE.ps1 - Script de diagnóstico e correção
  • INSTALADOR_POWERSHELL.ps1 - Instalador completo

Resumo da Solução

Componente Status Descrição
Cliente Python Atualizado Suporte a --silent
Registry Auto-Start Implementado Método primário
Task Scheduler Implementado Método secundário (mais robusto)
Script de Configuração Criado CONFIGURAR_AUTOSTART_NOIDLE.ps1
Script de Diagnóstico Criado VERIFICAR_E_CORRIGIR_NOIDLE.ps1
Documentação Criada Este arquivo

O problema de não iniciar automaticamente após reinicialização está RESOLVIDO! 🎉

Para novos clientes, basta instalar e ativar. Para clientes existentes, executar o script de configuração ou correção.