# SID текущего пользователя
$sid = [System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value
# Сбрасываем кривые права самого скрипта
icacls "C:\Scripts\ClipboardLogger.ps1" /reset
# Убираем ранее созданные DENY с папки Scripts
icacls "C:\Scripts" /remove:d "*$sid"
# Папка со скриптом: пользователю только чтение и запуск
icacls "C:\Scripts" /grant:r "*${sid}:(OI)(CI)(RX)"
# SYSTEM и администраторы сохраняют полный доступ
icacls "C:\Scripts" /grant:r "*S-1-5-18:(OI)(CI)F"
icacls "C:\Scripts" /grant:r "*S-1-5-32-544:(OI)(CI)F"
# Создаём отдельную папку для логов
New-Item -ItemType Directory -Path "C:\ClipboardLogs" -Force | Out-Null
# Туда пользователь может писать и изменять файлы
icacls "C:\ClipboardLogs" /grant:r "*${sid}:(OI)(CI)(M)"
# Проверка чтения скрипта
Write-Host "`n=== Проверка чтения скрипта ==="
Get-Content "C:\Scripts\ClipboardLogger.ps1"
# Проверка записи в папку логов
Write-Host "`n=== Проверка записи лога ==="
"TEST $(Get-Date)" | Add-Content "C:\ClipboardLogs\clipboard_history.txt"
# Показываем итоговые права
Write-Host "`n=== Права C:\Scripts ==="
icacls "C:\Scripts"
Write-Host "`n=== Права скрипта ==="
icacls "C:\Scripts\ClipboardLogger.ps1"
Write-Host "`n=== Права C:\ClipboardLogs ==="
icacls "C:\ClipboardLogs"