# 🔧 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) ```powershell # 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) ```powershell # 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:** ```powershell .\VERIFICAR_E_CORRIGIR_NOIDLE.ps1 -AutoFix ``` --- ## 📋 Verificação Manual ### Verificar se o NoIdle está rodando ```powershell 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 ```powershell Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "NoIdle" ``` **Resultado esperado:** ``` NoIdle : "C:\Program Files\NoIdle\NoIdle.exe" --silent ``` --- ### Verificar Task Scheduler ```powershell 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 ```powershell 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 ```powershell $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 ```powershell $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 ```powershell Start-Process -FilePath "C:\Program Files\NoIdle\NoIdle.exe" -ArgumentList "--silent" -WindowStyle Hidden ``` --- ## 🧪 Como Testar ### Teste 1: Iniciar Manualmente ```powershell # 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: ```powershell # 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 Library` → `NoIdle_Monitor` 3. Clique na aba **History** (Histórico) 4. Procure por erros ou execuções bem-sucedidas --- ### Verificar Event Viewer ```powershell # 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:** ```powershell # 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: ```powershell .\VERIFICAR_E_CORRIGIR_NOIDLE.ps1 | Out-File -FilePath "diagnostico.txt" ``` 2. Verifique se o executável está correto: ```powershell Get-Item "C:\Program Files\NoIdle\NoIdle.exe" ``` 3. Verifique se a configuração existe: ```powershell 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.