====== Создание ярлыка на рабочем столе (C:\Users\User\Desktop\Far Manager Admin.lnk) с запуском от Администратора ====== # 1. Находим активного (интерактивного) пользователя (например, VK00006547\User) $interactiveUser = (Get-CimInstance -ClassName Win32_ComputerSystem).UserName if (-not $interactiveUser) { Write-Host "Никто не залогинен на ПК" -ForegroundColor Red exit } # 2. Извлекаем только логин (всё, что после слэша "\") $shortName = $interactiveUser.Split('\')[-1] # 3. Формируем прямой путь к Рабочему столу, как вы и предложили $DesktopPath = "C:\Users\$shortName\Desktop" # Небольшая проверка на случай, если папка перенесена в OneDrive или названа по-русски if (-not (Test-Path $DesktopPath)) { if (Test-Path "C:\Users\$shortName\OneDrive\Рабочий стол") { $DesktopPath = "C:\Users\$shortName\OneDrive\Рабочий стол" } elseif (Test-Path "C:\Users\$shortName\OneDrive\Desktop") { $DesktopPath = "C:\Users\$shortName\OneDrive\Desktop" } } # 4. Указываем пути для ярлыка $FarPath = "C:\Program Files\Far Manager\far.exe" $FarDir = "C:\Program Files\Far Manager" $ShortcutPath = "$DesktopPath\Far Manager Admin.lnk" # 5. Создаём базовый ярлык на Рабочем столе залогиненного юзера $WshShell = New-Object -ComObject WScript.Shell $Shortcut = $WshShell.CreateShortcut($ShortcutPath) $Shortcut.TargetPath = $FarPath $Shortcut.WorkingDirectory = $FarDir $Shortcut.Save() # 6. Включаем галочку "Запускать от имени администратора" (21-й байт) $bytes = [System.IO.File]::ReadAllBytes($ShortcutPath) $bytes[21] = $bytes[21] -bor 0x20 [System.IO.File]::WriteAllBytes($ShortcutPath, $bytes) Write-Host "✅ Ярлык успешно создан!" -ForegroundColor Green Write-Host "Пользователь: $interactiveUser" -ForegroundColor Cyan Write-Host "Путь: $ShortcutPath" -ForegroundColor Cyan