Креирајте прилагођене пречице помоћу Windows Script Host-а

Последње ажурирање: 29/09/2025
Аутор: Исак
  • WSH вам омогућава да креирате .lnk и .url пречице из VBScript, VBA, VB6, VFP и ПоверСхелл са објектом WScript.Shell.
  • У ИТ имплементацијама, контекст (корисник наспрам СИСТЕМА) одлучује да ли ће се користити јавна или корисничка радна површина.
  • Са MSIX/PSF, AppExecutionAlias ​​​​избегава верзионисане путање и олакшава трајни приступ.
  • Иконе, аргументи, пречице и стилови прозора контролишу се својствима пречица.

Пречице у оперативном систему Windows са WSH-ом

Креирање пречица није само погодност: то је начин за аутоматизацију задатака и побољшање ваше свакодневне продуктивности. виндовс. виндовс Скрипта Домаћин (WSH) Нуди једноставан и моћан начин за генерисање линкова ка апликацијама, документима и веб адресама из више скриптних језика.

У овом практичном водичу обједињујемо проверене технике са VBScript, PowerShell, Visual Basic, Visual FoxPro и модерни сценарији са пакетима MSIX и PSFЦиљ је да вам омогућимо да изаберете приступ који најбоље одговара вашем окружењу (крајњи корисник, ИТ, Intune/SCCM или пакетни) и да га имплементирате са поверењем.

Шта је Windows Script Host и зашто би вас то могло занимати

Windows Script Host је инфраструктура која вам омогућава да покренете VBScript и JScript изворно на Windows-у, поред тога што излаже COM објектни модел за аутоматизацију системских задатака. Објекат WScript.Shell То је кључни део за креирање пречица на радној површини, пречица у менију „Старт“ или посебних фасцикли.

WSH је део Windows-а од верзија као што су Виндовс 98 и 2000, и може се додати старијим издањима као што је Windows NT 4.0 коришћењем опционих компоненти. У модерним системима долази интегрисано и у пракси је довољно имати извршне датотеке wscript.exe и cscript.exe за покретање скрипти.

Примери скрипти за пречице

Захтеви и најбоље праксе пре почетка

Пре него што почнете, добра је идеја да прегледате неке основне тачке. Проверите да ли је WSH доступан и не постоје политике које блокирају извршавање скрипти. У корпоративним окружењима, GPO-и и подешавања антивирусног програма могу утицати на VBScript или PowerShell.

Избегавајте да затрпавате радну површину пречицама. Креирајте приступе само када додају вредност а ако их дистрибуирате централизовано, дефинишите јасан критеријум (нпр. радне фасцикле или апликације критично корпоративно).

Ако се скрипта покрене као СИСТЕМ или у машинском контексту (Intune/SCCM), добро размислите где ћете уписати .lnk датотеку: можда ћете желети да користите јавну радну површину (C:\\Users\\Public\\Desktop) уместо радне површине тренутног корисника.

Проверите одредишна путања, дозволе и променљиве окружењаТипична грешка је указивање на путање са променљивим верзијама (Program Files\\WindowsApps) или коришћење UNC-а без приступа са налога који покреће скрипту.

Посебне фасцикле и како решити њихове путање

WSH разрешава имена посебних фасцикли у њихову стварну путању користећи WshShell.SpecialFoldersМеђу најкориснијима су Десктоп, СтартМени, Програми, Покретање или Омиљени, као и њихове варијанте за све кориснике (СвиКориснициДесктоп, СвиКориснициСтартМени, итд.). Ово вам омогућава да будете независни језика и тачне структуре профила.

Ако радите са класичним Visual Basic-ом или желите да добијете руте из API-ја, можете користити SHGetSpecialFolderLocation/SHGetPathFromIDList да бисте навели путање као што су Десктоп, Недавни програми или Документи. Корисно је када се интегришете у апликације који не зависе директно од WScript објекта.

Основни образац: Креирање пречица помоћу WScript.Shell-а

Ток је једноставан: креирајте COM инстанцу, генеришите пречицу, попуните својства и сачувајте. Овај образац се понавља у VBScript, VBA, VB6, VFP и PowerShell-у. са мањим синтаксичким варијацијама.

' VBScript: acceso directo a una aplicación
Dim sh, lnk
Set sh = CreateObject("WScript.Shell")
Dim escritorio: escritorio = sh.SpecialFolders("Desktop")
Set lnk = sh.CreateShortcut(escritorio & "\\MiApp.lnk")
lnk.TargetPath = "%windir%\\notepad.exe"
lnk.IconLocation = "%windir%\\system32\\shell32.dll,0"
lnk.Arguments = ""
lnk.WorkingDirectory = "%windir%"
lnk.WindowStyle = 4 ' Normal (3 maximizada, 7 minimizada)
lnk.Save

En ВБА/ВБ6 Шаблон је еквивалентан, мењају се само синтакса и место где се код налази. Можете креирати пречицу на радној површини, доделити јој опис, икону, пречица и стил прозора:

' VBA/VB6: crear acceso con icono y hotkey
Dim sh As Object, sc As Object
Set sh = CreateObject("WScript.Shell")
Dim destino As String: destino = sh.SpecialFolders("Desktop") & "\\BlocDeNotas.lnk"
Set sc = sh.CreateShortcut(destino)
With sc
  .TargetPath = "%windir%\\system32\\notepad.exe"
  .WorkingDirectory = "%windir%\\system32"
  .IconLocation = "%windir%\\system32\\shell32.dll,2"
  .Description = "Abrir el Bloc de notas"
  .Hotkey = "ALT+CTRL+N"
  .WindowStyle = 4
  .Save
End With

са Висуал ФокПро Такође можете користити објекат WScript.Shell. Идеја је идентична: лоцирајте Desktop, креирајте .lnk и подесите својства као што су СтилПрозора, ЛокацијаИконе, ПутањаЦиља или комбинацију тастера.

* Visual FoxPro: crear acceso directo de ejemplo
LOCAL sh, desk, sc
sh = CREATEOBJECT("WScript.Shell")
desk = sh.SpecialFolders("Desktop")
sc = sh.CreateShortcut(desk + "\\EjemploWSH.lnk")
sc.TargetPath = "%windir%\\notepad.exe"
sc.IconLocation = "C:\\Path\\a\\miicono.ico"
sc.Hotkey = "ALT+CTRL+F"
sc.WindowStyle = 3 && 3=max 7=min 4=normal
sc.Save

У свим случајевима, суштина је иста: Направи пречицу, Циљна путања, СачувајОдатле, прилагодите аргументе, икону, радни директоријум и стил прозора по потреби.

  Како лако преносити видео записе преко мреже помоћу ВЛЦ-а

Аргументи, стил прозора, иконе и пречице

Када приступ мора да покрене апликацију са параметрима, једноставно попуните АргументиЗа процес боот у одређеној фасцикли, користите .РадниИменик са правом рутом.

За изглед, дефинишите .ЛокацијаИконе указујући на .ico или ресурс у .exe/.dll датотеци (можете навести индекс после зареза). Понашање при отварању се контролише помоћу .СтилПрозора3 максимизирано, 7 минимизирано, 4 нормално.

Ако желите комбинацију тастера, користите Пречица са шаблоном ALT+CTRL+слово (на пример, ALT+CTRL+N). Ова додела убрзава отварање, али Није препоручљиво доделити превише како не би ометали системске пречице.

Пречице за URL-ове (.url)

Поред .lnk датотека апликација, WSH може да креира .url пречице које отварају подразумевани прегледач. TargetPath указује на веб адресу а ако вам је потребна сопствена икона, можете касније изменити .url датотеку да бисте додали IconFile и IconIndex.

' VBScript: acceso directo a una URL
Dim sh, urlShortcut
Set sh = CreateObject("WScript.Shell")
Dim desk: desk = sh.SpecialFolders("Desktop")
Set urlShortcut = sh.CreateShortcut(desk & "\\SitioCorporativo.url")
urlShortcut.TargetPath = "https://www.ejemplo.com"
urlShortcut.Save
' (Opcional) reabrir el .url como texto y añadir:
' IconFile=C:\\Rutas\\icono.ico
' IconIndex=0

Овај приступ је идеалан за линкови до СхареПоинт, интранет или веб апликације које желите да оставите при руци на корисничкој радној површини.

PowerShell за ИТ: Intune, SCCM и велике имплементације

PowerShell укључује приступ истом COM моделу као и WSH, тако да можете креирати приступ и дистрибуирати га масовно. Уобичајена ствар је да се открије исправна радна површина (корисничке или јавне), генеришите одредишне фасцикле и, ако је потребно, закачите путање у Брзом приступу.

# PowerShell: utilidades y creación del acceso
param(
  [Parameter(Mandatory=$true)] [string]$ShortcutTargetPath,
  [Parameter(Mandatory=$true)] [string]$ShortcutDisplayName,
  [string]$IconFile = $null,
  [string]$ShortcutArguments = $null,
  [string]$WorkingDirectory = $null
)
function Test-RunningAsSystem {
  # Devuelve true si el contexto es SYSTEM (S-1-5-18)
  ((whoami -user) -match "S-1-5-18")
}
function Get-DesktopDir {
  if (Test-RunningAsSystem) {
    Join-Path $env:PUBLIC "Desktop"
  } else {
    [Environment]::GetFolderPath("Desktop")
  }
}
function New-Shortcut {
  param([string]$Target, [string]$Path, [string]$Args, [string]$Work, [string]$Icon)
  $sh = New-Object -ComObject WScript.Shell
  $lnk = $sh.CreateShortcut($Path)
  $lnk.TargetPath = $Target
  if ($Args) { $lnk.Arguments = $Args }
  if ($Work) { $lnk.WorkingDirectory = $Work }
  if ($Icon) { $lnk.IconLocation = $Icon }
  $lnk.WindowStyle = 4
  $lnk.Save()
  [Runtime.InteropServices.Marshal]::ReleaseComObject($sh) | Out-Null
}
$desk = Get-DesktopDir
$targetFolder = Join-Path $desk "SharePoint Shortcuts"
if (-not (Test-Path $targetFolder)) { New-Item -ItemType Directory -Path $targetFolder | Out-Null }
$dest = Join-Path $targetFolder ("{0}.lnk" -f $ShortcutDisplayName)
New-Shortcut -Target $ShortcutTargetPath -Path $dest -Args $ShortcutArguments -Work $WorkingDirectory -Icon $IconFile

У имплементацијама са УсаглашеноОвај образац вам омогућава да креирате фасциклу на радној површини и проследите приступ Edge-у помоћу параметара као што је SharePoint URL. Ако се покрене као СИСТЕМ, циљна радна површина ће бити јавна, видљива свим профилима.

  Сазнајте како да спречите друге да контролишу ваш Цхромецаст машину

En СКГОАко више волите да инсталирате унапред направљену .lnk датотеку, минимална команда може бити једноставна као копирање на јавну радну површину: Копирај-ставку \\сервер\\путања\\access.lnk C:\\Корисници\\Јавно\\Радна површинаАко се не појави, проверите ове тачке:

  • Контекст извршењаУверите се да програм ради са довољним дозволама и на очекиваном кориснику/систему.
  • Приступ дељеном ресурсуПокренути налог мора бити у стању да чита UNC путању.
  • Руте са размацимаСтавите -Путању и -Одредиште под наводнике.
  • БитностУ мешовитим 32/64-битним окружењима, потврђује да нема нежељених преусмеравања.

Закачи за брзи приступ помоћу Shell.Application

Поред радне површине, можете закачити фасцикле на Брзи приступ са Shell.Application COM објектом. Ово је корисно када креирате путању повезивања и желите да она буде доступна у Explorer-у.

# PowerShell: anclar carpeta a Acceso rápido
$quick = New-Object -ComObject shell.application
$toPin = Join-Path ([Environment]::GetFolderPath("Desktop")) "SharePoint Shortcuts"
$home = "shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}"
if(-not ($quick.Namespace($home).Items() | Where-Object { $_.Path -eq $toPin })){
  $quick.Namespace($toPin).Self.InvokeVerb("pintohome")
}

Ако управљате тимовима и желите да корисници брзо пронађу своје пречице, Ова мала акција прави разлику у њиховом дану у дан.

MSIX и PSF: Креирајте приступ без ослањања на верзионе путање

Када пакујете апликације са МСИКС, путања инсталације садржи верзију (на пример, C:\\Program Files\\WindowsApps\\MyApp_1.0.0.0_x86__…). Мења се са сваким ажурирањем, тако да није добра идеја поставити .lnk датотеку са том путањом. Решење: AppExecutionAliasДефинисањем алијаса у манифесту, можете покренути апликацију са %localappdata%\\Microsoft\\WindowsApps\\myapp.exe без везивања за верзију.

Да бисте то урадили, додајте именске просторе у манифест (uap3 и desktop) и креирајте екстензију windows.appExecutionAlias указујући на извршну датотеку пакета. Не заборавите да укључите имена у IgnorableNamespaces како би их манифест препознао.

Након тога, можете променити улазну тачку апликације на PSFLauncher32.exe/PSFLauncher64.exe (у зависности од архитектуре) и делегирати креирање приступа скрипти за покретање дефинисаној у config.json користећи PSF. Скрипта се покреће једном при првој иницијализацији.

{
  "applications": [
    {
      "id": "App",
      "executable": "MiApp\\MiApp.exe",
      "workingDirectory": "MiApp\\",
      "startScript": {
        "scriptPath": "createshortcut.ps1",
        "runInVirtualEnvironment": false,
        "waitForScriptToFinish": true,
        "showWindow": false,
        "runOnce": true
      }
    }
  ]
}

PowerShell createshortcut.ps1 Можете копирати готову .lnk датотеку из пакета на корисничку радну површину, а такође и донети икону у радни простор. Локални кеш\\Роминг који остаје стабилан између верзија.

# createshortcut.ps1 (dentro del paquete)
Copy-Item "Mi App.lnk" "$env:USERPROFILE\\Desktop\\Mi App.lnk" -Force
Copy-Item "miapp.ico" "$env:APPDATA\\miapp.ico" -Force

Овим приступом осигуравате да приступ функционише након ажурирања, без додиривања .lnk датотеке у свакој верзијиАко путања указује на алиас (на пример, %localappdata%\\Microsoft\\WindowsApps\\myapp.exe), путања ће и даље бити важећа.

Обрада грешака и препоручене валидације

Пре генерисања .lnk датотеке, препоручљиво је проверити да ли је Циљна путања постоји (осим ако не користите променљиве попут %windir% или алијасе). У VBA/VB6 можете упозорити ако извршна датотека недостаје или отказати операцију; у PowerShell-у користите Test-Path да бисте проверили да ли је путања доступна.

  Како да користите ФацеТиме на свом Виндовс рачунару

Ако је путања иконе .ico мрежа, корисна тактика је да га копирате у привремену или APPDATA фасциклу корисника и да га одатле позовете. Овако избегавате поломљене иконе ако мрежни ресурс није доступан.

Приликом уређивања .url пречица, ако вам је потребна сопствена икона, поново отворите датотеку као текст и додајте IconFile и IconIndex на крају. Ово вам даје потпуну контролу над његовим изгледом без ослањања на прегледач.

Када завршите COM, ослободите објекте са РелеасеЦомОбјецт у PowerShell-у или доделити Nothing у VB/VBA. То је мањи детаљ, али помаже у избегавању застоја ресурса у интензивним погубљењима.

Типични случајеви квара и како их решити

Ако се имплементација од стране SCCM-а заврши са кодом 0, али се приступ не појави, прво проверите циљни корисник десктопаАко сте радили као SYSTEM и у интерактивни профил укуцали %USERPROFILE%\Desktop, нећете видети ништа. Користите C:\Users\Public\Desktop да бисте га учинили видљивим свима.

У Intune-у, када генеришете Edge упите са аргументима (на пример, URL са кодираним размацима), потврдите то наводници су у реду у -ShortcutArguments и текст стиже нетакнут. Један простор ван места може да промени судбину .lnk датотеке.

За корпоративне фасцикле са пречицама (нпр. „SharePoint пречице“), прво креирајте фасциклу на одговарајућој радној површини, а ако желите да је означите у Explorer-у, причврстите за брзи приступ као што смо видели са Shell.Application.

Ако дистрибуирате већ изграђени .lnk у MSIX пакету који се ажурира, немојте га усмеравати ка верзионисаној путањи унутар WindowsApps. Користи AppExecutionAlias и копирајте икону из верзионисане фасцикле.

Корисни трикови са променљивим и путањама

Да бисте писали преносиве скрипте, ослањајте се на Променљиве окружења: %windir%, %systemroot%, %ProgramFiles% и слично. У WSH-у их можете проширити са ПрошириОкружењеСтрингова, а у PowerShell-у можете им се обратити преко $env:VARIABLE.

Приликом изградње динамичких рута, проверите да ли радни фолдер се завршава са \ да би се избегло дуплирање трака или прекидање TargetPath-а приликом спајања. То је мала заштитна ограда која избегавајте суптилне грешке у производњи.

За пречице које захтевају сложене параметре, размислите о писању мале .cmd или .ps1 скрипте и подешавању пречице тако да указује на њу. Овако се поједностављује .lnk датотека и имате бољу контролу над цитирањем и редоследом аргумената.

Ако су вам потребни пречице, покушајте да резервишете комбинације са значајна слова и избегавајте сукобе са уобичајеним пречицама. У окружењима са много апликација, документујте пречице како би корисник могао искористите предности без покушаја и грешака.

Имате низ опција за креирање пречица у оперативном систему Windows на поуздан и флексибилан начин. WSH је заједничка база, а поред тога, можете одабрати слој: класичне скрипте, модерни PowerShell или MSIX паковање са PSF-ом када тражите понављајуће процесе у великим размерама. Кључ је у одабиру праве путање, валидацији контекста извршавања и избегавању закључавања у крхке, верзионисане путање.