Há alguns meses, publiquei minha solução para esse problema aqui.
Como uma reação no post de tfrederick74656 (abaixo), declarei ter uma solução melhor usando a segmentação em nível de item para a área de trabalho remota.
Depois que postei isso, funcionou por um ou dois dias e depois não fez mais nada.
Depois de alguns meses fazendo outras coisas e me perguntando o que realmente acontece eu comecei tudo de novo.
E desta vez eu realmente tenho a solução para o problema!
Objetivo: todos os laptops, desktops e servidores com política de tela de bloqueio, exceto o RDP.
Não é mais uma solução de segmentação no nível do item, mas um script e uma configuração juntos em um GPO.
Como dito em outros lugares, existem quatro configurações que você precisará:
-
Ativar proteção de tela
-
Ativado Proteger com senha a proteção de tela
-
Ativado Forçar proteção de tela específica
-
Enabled ScreenSaveTimeOut [tempo em segundos]
Como não sei qual configuração é responsável por essa coisa funcionar, queria incluí-las no script. Uma configuração que não consegui encontrar, portanto, esta é separada das outras: Forçar protetor de tela específico. (Você não precisa informar ao sistema qual protetor de tela será necessário.)
A outra coisa que precisamos é de um script: LockDesktopAfter3MinutesExceptRDP.PS1
Este é o GPO:
Configuração do usuário - Políticas - Modelos administrativos - Painel de controle - Personalização - Forçar protetor de tela específico: Ativado (Você não precisa informar ao sistema qual protetor de tela será necessário).
EaquiestáoscriptqueadicioneiaoGPO:
$File="c:\temp\sessions.txt"
query session > $File
$text = Get-Content $File
ForEach ($Line in $text)
{
If ($Line -like '*>console*')
{
#console session
Set-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop\" -Name ScreenSaveActive -Value 1
Set-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop\" -Name ScreenSaverIsSecure -Value 1
Set-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop\" -Name ScreenSaveTimeOut -Value 180
}
ElseIf ($Line -like '*>rdp-tcp*')
{
#RDP session
Set-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop\" -Name ScreenSaveActive -Value 0
Set-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop\" -Name ScreenSaverIsSecure -Value 0
Set-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop\" -Name ScreenSaveTimeOut -Value 86400
}
}
# Apply this new policy now (immediately after this registry change)
Start-Sleep -s 10
Start-Process -FilePath "rundll32.exe" -ArgumentList "user32.dll, UpdatePerUserSystemParameters 1, True"
E é disso que o roteiro é:
Quando você digita "sessão de consulta" em uma caixa cmd, recebe sua sessão e outras sessões possíveis em algumas linhas. Sua própria sessão tem um "sinal de maior que" no início da linha.
O script do powershell lê esta saída linha a linha e verifica se "> console" ou "> rdp-tcp" está presente. Agora você sabe se está lidando com uma área de trabalho remota - desktop ou console-desktop.
Agora você pode alterar o comportamento da área de trabalho de bloqueio, dependendo da situação, alterando os itens do registro.
Mas isso é apenas metade da solução.
O verdadeiro problema foi que você tem que dizer ao sistema que você quer o resultado AGORA. Isso é feito executando a última linha do script.
Espero que isso ajude você.