-
Notifications
You must be signed in to change notification settings - Fork 0
/
screensaver.ps1
105 lines (94 loc) · 4.24 KB
/
screensaver.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# Script para implementar protetor de tela para usuários do Windows
# Autor: Francisco Luvisari Scavassa
# Data: 2024-08-09
# Versão: 1.4
# Variáveis globais
$registryPath = "HKCU:\Control Panel\Desktop"
$screenSaveActive = Get-ItemProperty -Path $registryPath -Name ScreenSaveActive
$screenSaverIsSecure = Get-ItemProperty -Path $registryPath -Name ScreenSaverIsSecure
$screenSaveTimeOut = Get-ItemProperty -Path $registryPath -Name ScreenSaveTimeOut
$scrnSave = Get-ItemProperty -Path $registryPath -Name SCRNSAVE.EXE
$protetorDeTela = "$env:TEMP\protetordetela\protetorDeTela.scr"
$protetorDeTelaNoServidor = "D:\teste\test_screensaver\protetorDeTela.scr"
$pastaProtetorDeTela = "$env:TEMP\protetordetela"
$logFile = "$pastaProtetorDeTela\script_log.txt"
# Função para logar mensagens
function Write-LogMessage {
param (
[string]$message
)
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$logEntry = "$timestamp - $message"
Write-Host $logEntry
if (-Not (Test-Path $pastaProtetorDeTela)) {
New-Item -Path $pastaProtetorDeTela -ItemType Directory | Out-Null
}
$logEntry | Out-File -FilePath $logFile -Append -Encoding utf8
}
# Função para copiar protetor de tela do servidor para a máquina local
function CopyScreenSaver {
Write-LogMessage "Iniciando cópia do protetor de tela..."
try {
if (-Not (Test-Path $pastaProtetorDeTela)) {
New-Item -Path $pastaProtetorDeTela -ItemType Directory
Write-LogMessage "Pasta temporária criada"
}
if (-Not (Test-Path $protetorDeTela)) {
Copy-Item -Path $protetorDeTelaNoServidor -Destination $protetorDeTela -ErrorAction Stop
Write-LogMessage "Protetor de tela copiado para a pasta temporária"
} else {
Write-LogMessage "Protetor de tela já existe na pasta temporária"
}
} catch {
Write-LogMessage "Erro ao copiar o protetor de tela: $_"
}
Write-LogMessage "Cópia do protetor de tela finalizada."
}
# Função para verificar e ativar o protetor de tela
function CheckAndActivateScreenSaver {
Write-LogMessage "Verificando e ativando o protetor de tela..."
if ($screenSaveActive.ScreenSaveActive -ne 1) {
Write-LogMessage "Protetor de tela estava inativo! ...ativando..."
Set-ItemProperty -Path $registryPath -Name ScreenSaveActive -Value 1
} else {
Write-LogMessage "Protetor de tela ativo"
}
if ($screenSaverIsSecure.ScreenSaverIsSecure -ne 1) {
Write-LogMessage "Protetor de tela não exige senha para desbloqueio"
} else {
Write-LogMessage "Protetor de tela exige senha para desbloqueio"
Set-ItemProperty -Path $registryPath -Name ScreenSaverIsSecure -Value 0
}
Write-LogMessage "Protetor de tela verificado e ativado."
}
# Função para definir o tempo de inatividade para ativação do protetor de tela
function SetScreenSaveTimeOut {
$timeout = 60
Write-LogMessage "Definindo tempo de inatividade para ativação do protetor de tela..."
if ($screenSaveTimeOut.ScreenSaveTimeOut -ne $timeout) {
Write-LogMessage "Definindo tempo de inatividade para ativação do protetor de tela: 1 minuto"
Set-ItemProperty -Path $registryPath -Name ScreenSaveTimeOut -Value $timeout
} else {
Write-LogMessage "Tempo de inatividade já está configurado para 1 minuto"
}
Write-LogMessage "Tempo de inatividade definido."
}
# Função para definir o protetor de tela copiado para pasta temporária
function SetScreenSaver {
$defaultSaver = "$env:TEMP\protetordetela\protetorDeTela.scr"
Write-LogMessage "Definindo o protetor de tela..."
if ($scrnSave.'SCRNSAVE.EXE' -ne $defaultSaver) {
Write-LogMessage "Definindo protetor de tela para: protetorDeTela.scr"
Set-ItemProperty -Path $registryPath -Name SCRNSAVE.EXE -Value $defaultSaver
} else {
Write-LogMessage "Protetor de tela já está definido como protetorDeTela.scr"
}
Write-LogMessage "Protetor de tela definido."
}
# Chamando funções
CopyScreenSaver
CheckAndActivateScreenSaver
SetScreenSaveTimeOut
SetScreenSaver
# Fim do script
Write-LogMessage "Script finalizado."