far_on_desktop
Создание ярлыка на рабочем столе (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
far_on_desktop.txt · Последнее изменение: — bonterkoz
