334 lines
9.0 KiB
Markdown
334 lines
9.0 KiB
Markdown
|
|
# 🔧 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.
|
||
|
|
|