No ambiente Windows Server com Terminal Services (RDS), é comum precisar restringir o uso de proxy a alguns usuários específicos, sem afetar todos os demais logados no mesmo servidor.
Quando aplicações críticas dependem de internet e todos usam a mesma máquina, a configuração global via GPO ou script universal não é viável, pois quebraria funcionalidades ou afetaria usuários que não deveriam ter proxy.
Aqui vamos mostrar uma solução prática: script PowerShell que aplica proxy apenas a usuários autorizados, utilizando o HKCU, rodando no logon do usuário.
1. Conceito da solução
- Usamos o HKCU para configurar o proxy no perfil do usuário, evitando impacto global.
- O script verifica se o usuário logado pertence a uma lista de permitidos antes de aplicar o proxy.
- Funciona para apps que respeitam as configurações de usuário (WinINET, navegadores).
- Apps que rodam como SYSTEM ou serviços não são afetados — o que mantém o ambiente seguro para aplicações críticas.
2. Criando a lista de usuários permitidos
No próprio servidor, você pode criar um arquivo .txt com os logins autorizados:
C:\Scripts\usuarios_proxy.txt
usuario1
usuario2
administrador
Cada linha corresponde ao username do Windows (não precisa domínio aqui, funciona com login local ou AD se o usuário logar corretamente).
3. Script PowerShell inteligente
C:\Scripts\Set-Proxy.ps1:
# Caminho do arquivo com usuários permitidos
$usuariosPermitidos = "C:\Scripts\usuarios_proxy.txt"
# Ler lista de usuários
$permitidos = Get-Content $usuariosPermitidos
# Obter o usuário logado
$usuarioAtual = $env:USERNAME
# Verificar se o usuário está na lista
if ($permitidos -contains $usuarioAtual) {
# Ativar proxy
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name ProxyEnable -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name ProxyServer -Value "proxy.seudominio.local:3128"
Write-Output "Proxy ativado para $usuarioAtual"
} else {
# Desativar proxy
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name ProxyEnable -Value 0
Write-Output "Proxy não aplicado para $usuarioAtual"
}
4. Associando o script ao logon do usuário
Se houver AD:
- Copie o script para
\\seuservidor\netlogon\Set-Proxy.ps1 - Abra Active Directory Users and Computers → usuário → Properties → Profile → Logon Script
- Chame o PowerShell:
powershell.exe -ExecutionPolicy Bypass -File \\seuservidor\netlogon\Set-Proxy.ps1
Se for local (sem AD):
- Abra gpedit.msc →
User Configuration → Windows Settings → Scripts (Logon/Logoff) → Logon - Adicione o comando acima.
Isso garante que cada usuário que logar terá o script rodando apenas no seu contexto, ativando ou não o proxy conforme a lista.
5. Testando
- Logue com um usuário da lista:
Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" | Select-Object ProxyEnable, ProxyServer
ProxyEnable = 1eProxyServer = proxy.seudominio.local:3128→ OK
- Logue com usuário fora da lista:
ProxyEnable = 0→ OK, nenhum impacto.
6. Vantagens dessa abordagem
- Controle centralizado: basta editar o arquivo
usuarios_proxy.txt. - Não afeta outros usuários no mesmo servidor TS.
- Sem necessidade de GPO complexa, filtragem ou autenticação no domínio.
- Seguro para aplicações críticas que dependem de internet no servidor, pois elas usam conexão global.
💡 Resumo:
Com esse esquema, você mantém o TS funcionando normalmente, aplica proxy só para quem precisa, e consegue gerenciar tudo por uma lista de usuários, sem dor de cabeça com AD, OU ou GPOs complexas.
