Загрузка данных


# =====================================================
# СКРИПТ АВТОМАТИЧЕСКОЙ УСТАНОВКИ ПОДПИСИ ПРЕДСЕДАТЕЛЯ
# Версия 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 "=== УСТАНОВКА ЗАВЕРШЕНА ==="