Eu consegui demonstrar para mim mesmo que a ferramenta presentationsettings
que eu sugeri originalmente "respeita" as configurações da Diretiva de Grupo que impedem que um usuário altere sua proteção de tela. Eu não estava ciente desse comportamento, mas certamente faz sentido, uma vez que os usuários só usariam essa ferramenta para se isentar de proteções de tela quando nada relacionado à apresentação estivesse acontecendo.
Como @ HopelessN00b menciona, você pode querer alterar a Diretiva de Grupo, como ela se aplica aos laptops "remotos". Você precisará invocar o processamento de diretivas de loopback porque as configurações do protetor de tela são por usuário, não por computador. O Processamento de Política de Loopback permite que você aplique as configurações do usuário a um computador, independentemente do usuário que fez o login.
O recurso é, infelizmente, confuso para muitas pessoas. Ele tem um par de diferentes "modos" (Merge versus Replace) que tornam ainda mais confuso. Para o seu aplicativo, você pode criar um link de um GPO para uma unidade organizacional "Remote Laptop Comptuers" que permite o Loopback Policy Processing no modo "Merge" em sua seção "Computer Configuration" e, em sua seção "User Configuration", define o protetor de tela propriedades para o que você quiser. Quando a próxima dessas máquinas for reinicializada (porque a alternância de não-loopback para loopback requer uma reinicialização - a atualização da política em segundo plano não a habilitará), você verá as máquinas começarem a selecionar as configurações do protetor de tela deste novo GPO.
Falta de escrever algum tipo de programa de serviço do lado do cliente para acessar o registro do usuário e alterar o valor de restrição da proteção de tela da Diretiva de Grupo (já que o usuário não pode fazê-lo por conta das permissões de registro). preso em uma situação onde você vai ter que escolher o menor dos males e desativar as restrições de proteção de tela para usuários em computadores laptop, usar algum "jiggler de mouse" de terceiros ou software de simulação de teclado ou apenas dizer aos usuários para viver com isso.
Editar:
Existe um grande número de programas de terceiros que podem fazer o que você está procurando, mas há certa "elegância" em fazer coisas com apenas componentes internos do sistema operacional.
Aqui está um pequeno programa VBScript, adequado para execução por wscript.exe
(significando que você poderia implantar este w / Group Policy Preferences diretamente na pasta "Startup" do computador) que deve fazer o que você está procurando, supondo que o seu O nome DNS do domínio não pode ser resolvido externamente para a sua rede. (Se ele puder ser resolvido externamente, então, francamente, você recebe o que merece.)
Este script fica em um loop de pesquisa, usando nslookup
para resolver o domínio nomeado na variável de ambiente USERDNSDOMAIN
. Ele pesquisa a cada 10 segundos, mas você pode modificar isso alterando a linha Const POLL_DELAY
. (O giro estranho de se executar novamente é necessário porque, se executado apenas por wscript.exe
, uma janela aparecerá brevemente em cada intervalo de sondagem - nada de bom.)
Quando o nome de domínio não resolve a tecla "F15" é "pressionado", causando atividade suficiente para o Windows não ativar o protetor de tela.
Este script foi testado no Windows 8.1 x64 com um usuário de domínio que tinha um objeto de diretiva de grupo aplicando a eles que incluía as configurações de modelo administrativo:
- Ativar proteção de tela - Ativada
- Evitar a alteração do plano de fundo da área de trabalho - Ativado
- Evitar a alteração da proteção de tela - Ativada
- Proteger com senha o protetor de tela - Ativado
- Tempo limite do protetor de tela - Ativado - 30 segundos
- Forçar proteção de tela específica - Ativado -
scrnsave.scr
Minha metodologia de teste foi a seguinte:
- Coloque o programa chamado
ss.vbs
na pasta "Inicialização" do computador - Efetue logon no computador como um usuário com as configurações de Política de Grupo aplicadas acima
- Verifique se a proteção de tela inicia após 30 segundos de inatividade
- Desbloqueie a máquina
- Desconecte a placa de interface de rede do computador
- Verifique se a proteção de tela não inicia após vários minutos de inatividade
- Reconecte a placa de interface de rede do computador
- Verifique se a proteção de tela inicia após 30 segundos de inatividade
- Faça logoff para verificar se o script não "trava" ou perturba o processo de logoff
Em uma máquina com Windows 8.1 x64, o script está fazendo exatamente o que eu quero.
Option Explicit
' Delay, in seconds, between attempts to resolve the domain name
' and pressing the "F15" key.
Const POLL_DELAY = 10
Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")
Dim objExec
Dim intFound
If UCase(Right(WScript.Fullname, 11)) = "WSCRIPT.EXE" Then
While 1
intFound = objShell.Run("cscript.exe """ & WScript.ScriptFullName & """", 0, True)
If intFound = 255 Then objShell.SendKeys("{F15}")
WScript.Sleep(POLL_DELAY * 1000)
Wend
Else
Set objExec = objShell.Exec("nslookup " & objShell.ExpandEnvironmentStrings("%USERDNSDOMAIN%"))
While Not objExec.StdOut.AtEndOfStream
If Left(objExec.StdOut.ReadLine, 5) = "Name:" Then WScript.Quit(0)
Wend
WScript.Quit(255)
End If