@echo off :: Включаем UTF-8 для консоли chcp 65001 >nul :: Проверка прав net session >nul 2>&1 if %errorLevel% == 0 ( goto :run_script ) else ( echo Требуются права Администратора. Подтвердите запрос... powershell -NoProfile -Command "Start-Process -FilePath '%~f0' -Verb RunAs" exit /b ) :run_script echo Подготовка к установке... set "PS_SCRIPT=%TEMP%\rustdesk_install_%RANDOM%.ps1" :: НАДЕЖНОЕ ИЗВЛЕЧЕНИЕ: Читаем и пишем строго в UTF-8 с помощью .NET, чтобы кириллица не ломала синтаксис powershell -NoProfile -Command "$content = [System.IO.File]::ReadAllText('%~f0', [System.Text.Encoding]::UTF8); $psCode = ($content -split '(?im)^:: --- BEGIN POWERSHELL ---.*\r?\n')[1]; [System.IO.File]::WriteAllText('%PS_SCRIPT%', $psCode, [System.Text.Encoding]::UTF8)" powershell -ExecutionPolicy Bypass -NoProfile -File "%PS_SCRIPT%" :: Заметаем следы (удаляем временный скрипт) del "%PS_SCRIPT%" exit /b :: --- BEGIN POWERSHELL --- $ErrorActionPreference = 'silentlycontinue' # Конфигурация RustDesk $rustdesk_pw="Energy2026" $rustdesk_cfg="=0nI9gjZ59GOCFHZpRUcZtibJtET0IFellkYWRUQKBlRNZXRvdUSOhFSJVTOyImI6ISeltmIsISdy5iN1k3ZyVmbl5yazVGZv8iOzBHd0hmI6ISawFmIsISdy5iN1k3ZyVmbl5yazVGZiojI5FGblJnIsISdy5iN1k3ZyVmbl5yazVGZiojI0N3boJye" # Скачивание последней версии с GitHub function getLatest() { $Page = Invoke-WebRequest -Uri 'https://github.com/rustdesk/rustdesk/releases/latest' -UseBasicParsing $HTML = New-Object -Com "HTMLFile" try { $HTML.IHTMLDocument2_write($Page.Content) } catch { $src = [System.Text.Encoding]::Unicode.GetBytes($Page.Content) $HTML.write($src) } $Downloadlink = ($HTML.Links | Where {$_.href -match '(.)+\/rustdesk\/rustdesk\/releases\/download\/\d{1}.\d{1,2}.\d{1,2}(.{0,3})\/rustdesk(.)+x86_64.exe'} | select -first 1).href $Downloadlink = $Downloadlink.Replace('about:', 'https://github.com') $Version = "unknown" if ($Downloadlink -match './rustdesk/rustdesk/releases/download/(?.*)/rustdesk-(.)+x86_64.exe') { $Version = $matches['content'] } if ($Version -eq "unknown" -or $Downloadlink -eq "") { Write-Output "ERROR: Version or download link not found." Exit } $params += @{Version = $Version} $params += @{Downloadlink = $Downloadlink} return(New-Object PSObject -Property $params) } $RustDeskOnGitHub = getLatest $rdver = ((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\RustDesk\").Version) if ($rdver -eq $RustDeskOnGitHub.Version) { Write-Output "RustDesk $rdver уже установлен. Обновление не требуется." } else { if (!(Test-Path C:\Temp)) { New-Item -ItemType Directory -Force -Path C:\Temp | Out-Null } cd C:\Temp Write-Output "Скачивание RustDesk..." Invoke-WebRequest $RustDeskOnGitHub.Downloadlink -Outfile "rustdesk.exe" Write-Output "Установка..." Start-Process .\rustdesk.exe --silent-install Start-Sleep -seconds 20 } # Установка и запуск службы $ServiceName = 'Rustdesk' $arrService = Get-Service -Name $ServiceName -ErrorAction SilentlyContinue if ($arrService -eq $null) { Write-Output "Установка системной службы RustDesk..." cd $env:ProgramFiles\RustDesk Start-Process .\rustdesk.exe --install-service Start-Sleep -seconds 20 $arrService = Get-Service -Name $ServiceName } while ($arrService.Status -ne 'Running') { Start-Service $ServiceName Start-Sleep -seconds 5 $arrService.Refresh() } # Применение конфигурации cd $env:ProgramFiles\RustDesk\ .\rustdesk.exe --get-id | Write-Output -OutVariable rustdesk_id .\rustdesk.exe --config $rustdesk_cfg .\rustdesk.exe --password $rustdesk_pw # ===================================================================== # БЛОК ИНТЕГРАЦИИ (FLASK) # ===================================================================== [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $clean_id = ($rustdesk_id -join "").Trim() $pc_name = $env:COMPUTERNAME $win_user = $env:USERNAME Add-Type -AssemblyName Microsoft.VisualBasic $LastName = [Microsoft.VisualBasic.Interaction]::InputBox("Установка завершена! Пожалуйста, введите вашу Фамилию (она будет отображаться у техподдержки):", "Настройка удаленного доступа Энергия", "") if ([string]::IsNullOrWhiteSpace($LastName)) { $LastName = $pc_name } # ❗❗❗ УКАЖИТЕ IP ВАШЕГО СЕРВЕРА С FLASK ❗❗❗ $FlaskServerUrl = "http://193.39.208.118:56056/telegram_proxy" $postParams = @{ rustdesk_id = $clean_id pc_name = $pc_name win_user = $win_user last_name = $LastName } Write-Output "Отправка данных на сервер интеграции..." try { $response = Invoke-RestMethod -Uri $FlaskServerUrl -Method Post -Body $postParams Write-Output "✅ Успешно: $response" } catch { Write-Output "❌ Ошибка при отправке: $_" } Write-Output "Готово! Окно закроется через 5 секунд." Start-Sleep -Seconds 5