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
This commit is contained in:
333
SOLUCAO_AUTOSTART.md
Normal file
333
SOLUCAO_AUTOSTART.md
Normal file
@@ -0,0 +1,333 @@
|
||||
# 🔧 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.
|
||||
|
||||
Reference in New Issue
Block a user