# =====================================================
# СКРИПТ АВТОМАТИЧЕСКОЙ УСТАНОВКИ ПОДПИСИ ПРЕДСЕДАТЕЛЯ
# Версия 2: с регистрацией контейнера в КриптоПро
# =====================================================
# === НАСТРОЙКИ ===
$ServerShare = "\\10.0.2.21\Disk_M\ОБМЕН\fss_ecp"
$NetContainerPath = "$ServerShare\fsspred.000"
$NetCertPath = "$ServerShare\cert_pred.cer"
$ContainerName = "fsspred.000"
# === ЛОКАЛЬНЫЕ ПУТИ ===
$LocalAppData = [Environment]::GetFolderPath("LocalApplicationData")
$CryptoProPath = Join-Path $LocalAppData "Crypto-Pro"
$LocalContainerPath = Join-Path $CryptoProPath $ContainerName
$MarkerFile = Join-Path $LocalAppData "Clinic_Chairman_Deployed_v1.txt"
$LogFile = Join-Path $LocalAppData "Clinic_Chairman_Deploy.log"
# === ФУНКЦИЯ ЛОГИРОВАНИЯ ===
function Write-Log {
param([string]$Message)
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$logEntry = "$timestamp | $env:COMPUTERNAME | $env:USERNAME | $Message"
try {
Add-Content -Path $LogFile -Value $logEntry -ErrorAction Stop
} catch {}
}
# === ПРОВЕРКА: УЖЕ УСТАНОВЛЕНО? ===
if (Test-Path $MarkerFile) {
Exit
}
Write-Log "=== НАЧАЛО УСТАНОВКИ ==="
# === ШАГ 1: ПРОВЕРКА СЕТЕВЫХ РЕСУРСОВ ===
if (-not (Test-Path $NetContainerPath)) {
Write-Log "ОШИБКА: Контейнер не найден: $NetContainerPath"
Exit
}
if (-not (Test-Path $NetCertPath)) {
Write-Log "ОШИБКА: Сертификат не найден: $NetCertPath"
Exit
}
# === ШАГ 2: КОПИРУЕМ КОНТЕЙНЕР ===
try {
if (-not (Test-Path $CryptoProPath)) {
New-Item -Path $CryptoProPath -ItemType Directory -Force | Out-Null
}
if (-not (Test-Path $LocalContainerPath)) {
New-Item -Path $LocalContainerPath -ItemType Directory -Force | Out-Null
}
Copy-Item -Path "$NetContainerPath\*" -Destination $LocalContainerPath -Force -Recurse
Write-Log "Контейнер скопирован в $LocalContainerPath"
} catch {
Write-Log "ОШИБКА копирования: $_"
Exit
}
# === ШАГ 3: РЕГИСТРИРУЕМ КОНТЕЙНЕР В КРИПТОПРО ===
try {
# Ищем certmgr.exe
$certmgrExe = $null
foreach ($path in @(
"C:\Program Files\Crypto Pro\CSP\certmgr.exe",
"C:\Program Files (x86)\Crypto Pro\CSP\certmgr.exe"
)) {
if (Test-Path $path) {
$certmgrExe = $path
break
}
}
if ($certmgrExe) {
# Регистрируем контейнер
$contPath = "\\.\HDIMAGE\$ContainerName"
$output = & $certmgrExe -inst -cont $contPath -store uMy 2>&1
Write-Log "Регистрация контейнера: $output"
} else {
Write-Log "ВНИМАНИЕ: certmgr.exe не найден"
}
} catch {
Write-Log "ОШИБКА регистрации: $_"
}
# === ШАГ 4: ИМПОРТ СЕРТИФИКАТА ===
try {
certutil.exe -user -addstore "My" $NetCertPath | Out-Null
Write-Log "Сертификат импортирован"
} catch {
Write-Log "ОШИБКА импорта сертификата: $_"
}
# === ШАГ 5: МАРКЕР ===
New-Item -Path $MarkerFile -ItemType File -Force | Out-Null
Write-Log "=== УСТАНОВКА ЗАВЕРШЕНА ==="