# Запуск от имени Администратора проверяется автоматически
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Warning "Запустите PowerShell от имени Администратора!"
exit
}
Write-Host "Начало применения настроек безопасности и политик..." -ForegroundColor Green
# --- 1. Блокировка учетной записи при неправильном вводе пароля ---
# Устанавливаем порог блокировки на 5 попыток
net accounts /lockoutthreshold:5
net accounts /lockoutwindow:30
net accounts /lockoutduration:30
# --- 2. Изменение параметров сложности пароля ---
# Включаем требования к сложности пароля и минимальную длину (8 символов)
net accounts /minpwlen:8
secedit /export /cfg "$env:TEMP\secpol.cfg"
(Get-Content "$env:TEMP\secpol.cfg") -replace "PasswordComplexity = 0", "PasswordComplexity = 1" | Set-Content "$env:TEMP\secpol.cfg"
secedit /configure /db "$env:TEMP\secpol.sdb" /cfg "$env:TEMP\secpol.cfg" /areas SECURITYPOLICY
Remove-Item "$env:TEMP\secpol.cfg", "$env:TEMP\secpol.sdb" -Force
# Создаем ветки реестра для политик через групповые политики / локальный реестр
$RegPoliciesPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows"
# --- 3. Запретить смену заставки ---
$PathPersist = "HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop"
if (!(Test-Path $PathPersist)) { New-Item -Path $PathPersist -Force | Out-Null }
Set-ItemProperty -Path $PathPersist -Name "NoDispScrSavPage" -Value 1 -Type DWord
# --- 4. Установить единую заставку рабочего стола ---
Set-ItemProperty -Path $PathPersist -Name "ScreenSaveActive" -Value 1 -Type DWord
Set-ItemProperty -Path $PathPersist -Name "SCRNSAVE.EXE" -Value "Mystify.scr" -Type String
# --- 5. Запрет на смену аватара учетной записи ---
$PathAccount = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"
if (!(Test-Path $PathAccount)) { New-Item -Path $PathAccount -Force | Out-Null }
Set-ItemProperty -Path $PathAccount -Name "UseDefaultTile" -Value 1 -Type DWord
# --- 6. Добавить на все рабочие столы ярлык калькулятора ---
$PublicDesktop = [Environment]::GetFolderPath('CommonDesktopDirectory')
$ShortcutPath = Join-Path $PublicDesktop "Калькулятор.lnk"
$WScriptShell = New-Object -ComObject WScript.Shell
$Shortcut = $WScriptShell.CreateShortcut($ShortcutPath)
$Shortcut.TargetPath = "$env:windir\System32\calc.exe"
$Shortcut.Save()
# --- 7. Запретить использование камер ---
$PathCamera = "$RegPoliciesPath\DeviceGuard" # или AppPrivacy
if (!(Test-Path "$RegPoliciesPath\AppPrivacy")) { New-Item -Path "$RegPoliciesPath\AppPrivacy" -Force | Out-Null }
Set-ItemProperty -Path "$RegPoliciesPath\AppPrivacy" -Name "LetAppsAccessCamera" -Value 2 -Type DWord
# --- 8. Запретить пользователям удалять обновления системы ---
$PathWU = "$RegPoliciesPath\WindowsUpdate\UI\Settings"
if (!(Test-Path $PathWU)) { New-Item -Path $PathWU -Force | Out-Null }
Set-ItemProperty -Path $PathWU -Name "HideMsoUControl" -Value 1 -Type DWord
# --- 9. Отключить приложение MS Store ---
$PathStore = "$RegPoliciesPath\WindowsStore"
if (!(Test-Path $PathStore)) { New-Item -Path $PathStore -Force | Out-Null }
Set-ItemProperty -Path $PathStore -Name "RemoveWindowsStore" -Value 1 -Type DWord
Write-Host "Все настройки успешно применены!" -ForegroundColor Green