$ErrorActionPreference= 'silentlycontinue' # Формируем пароль из зашифрованных частей $p1 = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("cDk4")) $p2 = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("Nng=")) $p3 = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("Yjc4")) $rustdesk_pw = $p1 + $p2 + $p3 # Get your config string from your Web portal and Fill Below $rustdesk_cfg="0nI1JnL09GclRWL0lmL0NXdy9yL6MHc0RHaiojIpBXYiwiI9gjYwBjbXVERFRXZiNEVYBjRGdHUZhUUvBVRx52dWlmenlTY6t0U1IlMLhlI6ISeltmIsISdy5CdvBXZk1Cdp5CdzVnciojI5FGblJnIsISdy5CdvBXZk1Cdp5CdzVnciojI0N3boJye" ################################### Please Do Not Edit Below This Line ######################################### # Запуск с правами администратора if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) { Start-Process PowerShell -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -Command `"cd '$pwd'; & '$PSCommandPath';`""; Exit; } } # Получаем путь к установщику $installerPath = Join-Path $PSScriptRoot "rustdesk.exe" # Проверяем наличие установщика if (!(Test-Path $installerPath)) { echo "Ошибка: rustdesk.exe не найден в директории скрипта" exit 1 } # Проверяем, установлен ли уже RustDesk $rdver = ((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\RustDesk\" -ErrorAction SilentlyContinue).Version) if($rdver) { echo "RustDesk $rdver уже установлен" cd $env:ProgramFiles\RustDesk echo "Применяем конфигурацию..." .\rustdesk.exe --config $rustdesk_cfg .\rustdesk.exe --password $rustdesk_pw # Добавляем параметры в конфиг файлы $configPath = "$env:USERPROFILE\AppData\Roaming\RustDesk\config" $config2Path = "$configPath\RustDesk2.toml" $configLocalPath = "$configPath\RustDesk_local.toml" if (!(Test-Path $configPath)) { New-Item -ItemType Directory -Force -Path $configPath } if (!(Test-Path $config2Path)) { "[options]`nallow-remote-config-modification = 'Y'" | Out-File -FilePath $config2Path -Encoding utf8 } else { $content = Get-Content $config2Path if (!($content -match "allow-remote-config-modification")) { if ($content -match "\[options\]") { $content = $content -replace "\[options\]", "[options]`nallow-remote-config-modification = 'Y'" } else { $content += "`n[options]`nallow-remote-config-modification = 'Y'" } $content | Out-File -FilePath $config2Path -Encoding utf8 } } if (!(Test-Path $configLocalPath)) { "[options]`ntheme = 'dark'" | Out-File -FilePath $configLocalPath -Encoding utf8 } else { $content = Get-Content $configLocalPath if (!($content -match "theme")) { if ($content -match "\[options\]") { $content = $content -replace "\[options\]", "[options]`ntheme = 'dark'" } else { $content += "`n[options]`ntheme = 'dark'" } $content | Out-File -FilePath $configLocalPath -Encoding utf8 } } $rustdesk_id = .\rustdesk.exe --get-id | Write-Output -OutVariable rustdesk_id echo "Конфигурация завершена! Проверьте сетевые настройки в RustDesk." echo "" echo "..............................................." echo "RustDesk ID: $rustdesk_id" echo "Пароль: $rustdesk_pw" echo "..............................................." echo "" echo "Нажмите Enter для запуска RustDesk." pause .\rustdesk.exe exit } # Создаем директорию ProgramData если нужно if (!(Test-Path C:\ProgramData\RustDesk)) { New-Item -ItemType Directory -Force -Path C:\ProgramData\RustDesk > null } # Копируем установщик Copy-Item $installerPath C:\ProgramData\RustDesk\rustdesk.exe cd C:\ProgramData\RustDesk echo "Установка RustDesk..." Start-Process .\rustdesk.exe -ArgumentList "--silent-install" -Wait Start-Sleep -Seconds 15 cd $env:ProgramFiles\RustDesk # Модифицированная установка сервиса для Windows 7 echo "Установка и запуск сервиса..." Start-Process .\rustdesk.exe -ArgumentList "--install-service" -Wait -NoNewWindow Start-Sleep -Seconds 10 # Пробуем запустить сервис несколько раз $maxAttempts = 3 $attempt = 0 $ServiceName = 'rustdesk' do { $attempt++ echo "Попытка запуска сервиса $attempt из $maxAttempts" Start-Process .\rustdesk.exe -ArgumentList "--start-service" -Wait -NoNewWindow Start-Sleep -Seconds 10 $service = Get-Service -Name $ServiceName -ErrorAction SilentlyContinue if ($service -and $service.Status -eq 'Running') { echo "Сервис успешно запущен" break } Start-Sleep -Seconds 5 } while ($attempt -lt $maxAttempts) echo "Очистка временных файлов..." Remove-Item -Path "C:\ProgramData\RustDesk\rustdesk.exe" -Force echo "Применение конфигурации..." .\rustdesk.exe --config $rustdesk_cfg .\rustdesk.exe --password $rustdesk_pw # Добавляем параметры в конфиг файлы $configPath = "$env:USERPROFILE\AppData\Roaming\RustDesk\config" $config2Path = "$configPath\RustDesk2.toml" $configLocalPath = "$configPath\RustDesk_local.toml" if (!(Test-Path $configPath)) { New-Item -ItemType Directory -Force -Path $configPath } if (!(Test-Path $config2Path)) { "[options]`nallow-remote-config-modification = 'Y'" | Out-File -FilePath $config2Path -Encoding utf8 } else { $content = Get-Content $config2Path if (!($content -match "allow-remote-config-modification")) { if ($content -match "\[options\]") { $content = $content -replace "\[options\]", "[options]`nallow-remote-config-modification = 'Y'" } else { $content += "`n[options]`nallow-remote-config-modification = 'Y'" } $content | Out-File -FilePath $config2Path -Encoding utf8 } } if (!(Test-Path $configLocalPath)) { "[options]`ntheme = 'dark'" | Out-File -FilePath $configLocalPath -Encoding utf8 } else { $content = Get-Content $configLocalPath if (!($content -match "theme")) { if ($content -match "\[options\]") { $content = $content -replace "\[options\]", "[options]`ntheme = 'dark'" } else { $content += "`n[options]`ntheme = 'dark'" } $content | Out-File -FilePath $configLocalPath -Encoding utf8 } } $rustdesk_id = .\rustdesk.exe --get-id | Write-Output -OutVariable rustdesk_id echo "Установка завершена! Проверьте сетевые настройки в RustDesk." echo "" echo "..............................................." echo "RustDesk ID: $rustdesk_id" # Отправка данных об установке $RustID = $rustdesk_id $ComputerName = $env:COMPUTERNAME $InstallTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss" # URL сервера $ServerURL = "http://rust.it-depot.ru:6661/api/install" # Формируем JSON $Body = @{ "rust_id" = $RustID "computer_name" = $ComputerName "install_time" = $InstallTime } | ConvertTo-Json -Compress # Отправляем POST-запрос Invoke-RestMethod -Uri $ServerURL -Method Post -Body $Body -ContentType "application/json" echo "..............................................." echo "" echo "Нажмите Enter для запуска RustDesk." pause .\rustdesk.exe