Vytvorte si vlastné skratky pomocou služby Windows Script Host

Posledná aktualizácia: 29/09/2025
Autor: Isaac
  • WSH umožňuje vytvárať skratky .lnk a .url z VBScript, VBA, VB6, VFP a PowerShell s objektom WScript.Shell.
  • V IT nasadeniach sa kontext (používateľ verzus SYSTÉM) rozhoduje o tom, či sa použije verejná alebo používateľská pracovná plocha.
  • V MSIX/PSF sa AppExecutionAlias ​​​​vyhýba cestám s verziami a uľahčuje trvalý prístup.
  • Ikony, argumenty, klávesové skratky a štýly okien sú ovládané vlastnosťami skratiek.

Skratky vo Windowse s WSH

Vytváranie skratiek nie je len pohodlné; je to spôsob, ako automatizovať úlohy a zlepšiť dennú produktivitu v systéme Windows . Windows Script Host (WSH) ponúka jednoduchý a výkonný spôsob generovania odkazov na aplikácie, dokumenty a webové adresy z viacerých skriptovacích jazykov.

Táto praktická príručka spája overené techniky používania VBScript, PowerShell, Visual Basic, Visual FoxPro a moderných scenárov s balíkmi MSIX a PSF . Cieľom je pomôcť vám vybrať si prístup, ktorý najlepšie vyhovuje vášmu prostrediu (koncový používateľ, IT, Intune/SCCM alebo balíkové riešenie) a aplikovať ho s istotou.

Čo je Windows Script Host a prečo by vás to mohlo zaujímať

Windows Script Host je infraštruktúra, ktorá umožňuje natívne spúšťanie jazykov VBScript a JScript v systéme Windows a tiež sprístupňuje objektový model COM na automatizáciu systémových úloh. Objekt WScript.Shell je kľúčový na vytváranie skratiek na pracovnej ploche, skratiek v ponuke Štart a skratiek k špeciálnym priečinkom.

WSH je súčasťou systému Windows od verzií ako Windows 98 a 2000 a je možné ho pridať aj do starších edícií, ako napríklad Windows NT 4.0, pomocou voliteľných komponentov. V moderných systémoch je integrovaný a v praxi na spúšťanie skriptov potrebujete iba spustiteľné súbory wscript.exe a cscript.exe.

Príklady skriptov pre skratky

Požiadavky a osvedčené postupy pred začatím

Predtým, ako začnete, je dobré si preštudovať niekoľko základných bodov. Overte, či je k dispozícii WSH a či neexistujú žiadne politiky blokujúce vykonávanie skriptov. V podnikových prostrediach môžu objekty GPO a konfigurácie antivírusového programu ovplyvniť VBScript alebo PowerShell.

Nezahlcujte si pracovnú plochu skratkami. Vytvárajte skratky iba vtedy, keď prinášajú pridanú hodnotu , a ak ich distribuujete centrálne, definujte jasné kritérium (napr. pracovné priečinky alebo kritické firemné aplikácie ).

Ak sa skript spúšťa ako SYSTEM alebo v kontexte počítača (Intune/SCCM), dôkladne si premyslite, kam zapíšete súbor .lnk: namiesto plochy aktuálneho používateľa môžete použiť verejnú pracovnú plochu (C:\\Users\\Public\\Desktop).

Skontrolujte cieľovú cestu, povolenia a premenné prostredia . Bežnou chybou je odkazovanie na cesty s meniacimi sa verziami (Program Files\WindowsApps) alebo používanie UNC bez prístupu pre účet, na ktorom je skript spustený.

Špeciálne priečinky a ako vyriešiť ich cesty

WSH prekladá názvy špeciálnych priečinkov na ich skutočné cesty pomocou WshShell.SpecialFolders . Medzi najužitočnejšie patria Desktop, StartMenu, Programs, Startup a Favorites, ako aj ich varianty pre všetkých používateľov (AllUsersDesktop, AllUsersStartMenu atď.). To vám umožňuje byť nezávislý od jazyka a presnej štruktúry profilu.

Ak pracujete s klasickým Visual Basic alebo chcete získať cesty z rozhrania API, môžete použiť SHGetSpecialFolderLocation/SHGetPathFromIDList na zobrazenie ciest, ako napríklad Plocha, Programy alebo Nedávne dokumenty. Toto je užitočné pri integrácii do aplikácií , ktoré sa priamo nespoliehajú na objekt WScript.

Základný vzor: Vytváranie skratiek pomocou WScript.Shell

Postup je jednoduchý: vytvoríte inštanciu COM, vygenerujete skratku, vyplníte vlastnosti a uložíte. Tento vzor sa opakuje vo VBScript, VBA, VB6, VFP a PowerShell s miernymi obmenami v syntaxi.

' 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

Vo VBA/VB6 je vzor ekvivalentný; mení sa iba syntax a miesto umiestnenia kódu. Môžete vytvoriť odkaz na pracovnej ploche, priradiť mu popis, ikonu, klávesovú skratku a štýl okna.

' 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

Vo Visual FoxPro môžete použiť aj objekt WScript.Shell. Myšlienka je rovnaká: vyhľadajte Desktop, vytvorte súbor .lnk a nastavte vlastnosti ako WindowStyle, IconLocation, TargetPath alebo klávesovú skratku.

* 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

Vo všetkých prípadoch je jadro rovnaké: CreateShortcut, TargetPath, Save . Odtiaľ podľa potreby prispôsobte argumenty, ikonu, pracovný adresár a štýl okna.

  Tu je 6 najlepších prehrávačov médií 4K, ktoré môže Windows 10 používať v roku 2019.

Argumenty, štýl okna, ikony a skratky

Keď Access potrebuje spustiť aplikáciu s parametrami, jednoducho vyplňte .Arguments . Ak chcete, aby sa proces spustil v konkrétnom priečinku, použite .WorkingDirectory s príslušnou cestou.

Pre vzhľad definujte .IconLocation odkazujúci na .ico alebo zdroj v súbore .exe/.dll (index môžete zadať za čiarkou). Správanie pri otváraní je riadené pomocou .WindowStyle : 3 maximalizované, 7 minimalizované, 4 normálne.

Ak chcete použiť kombináciu klávesov, použite klávesovú skratku so vzorom ALT+CTRL+písmeno (napríklad ALT+CTRL+N). Toto priradenie zrýchľuje otváranie, ale neodporúča sa priradiť ich príliš veľa, aby ste predišli rušeniu systémových skratiek.

Skratky URL (.url)

Okrem súborov .lnk aplikácií dokáže WSH vytvárať skratky .url, ktoré otvárajú predvolený prehliadač. TargetPath odkazuje na webovú adresu a ak potrebujete vlastnú ikonu, môžete súbor .url následne upraviť a pridať IconFile a 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

Tento prístup je ideálny pre odkazy na SharePoint , intranet alebo webové aplikácie , ktoré chcete mať ľahko dostupné na pracovnej ploche používateľa.

PowerShell pre IT: Intune, SCCM a rozsiahle nasadenia

PowerShell obsahuje prístup k rovnakému modelu COM ako WSH, takže môžete vytvárať skratky a hromadne ich distribuovať. Obvyklý proces zahŕňa detekciu správnej plochy (používateľskej alebo verejnej), generovanie cieľových priečinkov a v prípade potreby pripnutie ciest k Rýchlemu prístupu.

# 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

V implementáciách Intune vám tento vzor umožňuje vytvoriť priečinok na pracovnej ploche a uložiť skratky Edge s parametrami, ako je napríklad URL adresa SharePointu. Ak sa spustí ako SYSTEM , cieľová pracovná plocha bude verejná pracovná plocha viditeľná pre všetky používateľské profily.

  Spôsob, ako skenovať údaje záznamov a priečinky na prítomnosť vírusov v systéme Windows 10

V SCCM , ak uprednostňujete nasadenie vopred vytvoreného súboru .lnk, najjednoduchším príkazom môže byť jeho skopírovanie na verejnú plochu: ` Copy-Item \\server\\path\\access.lnk C:\\Users\\Public\\Desktop` . Ak sa nezobrazí, skontrolujte tieto body:

  • Kontext vykonávaniaUistite sa, že program beží s dostatočnými oprávneniami a na očakávanom používateľovi/systéme.
  • Prístup k zdieľanému zdrojuSpustený účet musí byť schopný čítať cestu UNC.
  • Trasy s medzeramiParametre -Cesta a -Cieľ uzavrite do úvodzoviek.
  • BitnessV zmiešaných 32/64-bitových prostrediach potvrdzuje, že neexistujú žiadne nechcené presmerovania.

Pripnúť na rýchly prístup pomocou Shell.Application

Okrem pracovnej plochy môžete priečinky pripnúť do panela Rýchly prístup pomocou objektu COM Shell.Application. Toto je užitočné, keď vytvoríte cestu k odkazu a chcete, aby bola prístupná v Prieskumníkovi.

# 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")
}

Ak riadite tímy a chcete, aby používatelia rýchlo našli svoje prihlasovacie údaje, táto malá akcia im v každodennom živote výrazne pomôže .

MSIX a PSF: Vytvorenie prístupu bez spoliehania sa na verziované cesty

Keď balíte aplikácie pomocou MSIX , inštalačná cesta obsahuje verziu (napríklad C:\Program Files\WindowsApps\MyApp_1.0.0.0_x86__…). Toto sa mení s každou aktualizáciou, takže nie je vhodné opravovať súbor .lnk s touto cestou. Riešenie: AppExecutionAlias . Definovaním aliasu v manifeste môžete spustiť aplikáciu pomocou %localappdata%\Microsoft\WindowsApps\myapp.exe bez toho, aby ste boli viazaní na verziu.

Ak to chcete urobiť, pridajte do manifestu menné priestory (uap3 a desktop) a vytvorte rozšírenie windows.appExecutionAlias ​​​​odkazujúce na spustiteľný súbor balíka. Nezabudnite zahrnúť názvy do IgnorableNamespaces, aby ich manifest rozpoznal.

Ďalej môžete zmeniť vstupný bod aplikácie na PSFLauncher32.exe/PSFLauncher64.exe (v závislosti od architektúry) a delegovať vytvorenie skratky na spúšťací skript definovaný v súbore config.json pomocou PSF. Skript sa spustí raz pri prvej inicializácii.

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

Príkaz PowerShell createshortcut.ps1 dokáže skopírovať vopred pripravený súbor .lnk z balíka na pracovnú plochu používateľa a tiež umiestniť ikonu do oblasti LocalCache\\Roaming , ktorá zostane stabilná medzi verziami.

# 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

Tento prístup zabezpečuje, že prístup bude fungovať aj po aktualizácii bez úpravy súboru .lnk v každej verzii . Ak prístup odkazuje na alias (napríklad %localappdata%\\Microsoft\\WindowsApps\\miapp.exe), cesta zostane platná.

Ošetrenie chýb a odporúčané validácie

Pred vygenerovaním súboru .lnk je vhodné overiť, či existuje premenná TargetPath (pokiaľ nepoužívate premenné ako %windir% alebo aliasy). Vo VBA/VB6 môžete zobraziť upozornenie, ak spustiteľný súbor chýba, alebo operáciu zrušiť; v PowerShell použite Test-Path na kontrolu, či je cesta prístupná.

  Tipy, ako povoliť alebo zakázať automatické dopĺňanie v prehliadači Chrome

Ak je cesta k ikone sieťový súbor .ico , užitočnou taktikou je skopírovať ho do dočasného priečinka používateľa alebo do priečinka APPDATA a odtiaľ naň odkazovať. Tým sa zabráni poškodeniu ikon, ak sieťový zdroj nie je k dispozícii.

Ak pri úprave súborov URL prístupu potrebujete vlastnú ikonu, znova otvorte súbor ako text a na koniec pridajte IconFile a IconIndex . Získate tak úplnú kontrolu nad jeho vzhľadom bez toho, aby ste sa museli spoliehať na prehliadač.

Po dokončení práce s COM uvoľnite objekty pomocou ReleaseComObject v PowerShell alebo priraďte Nothing vo VB/VBA. Je to drobný detail, ale pomáha predchádzať viazaniu zdrojov počas intenzívneho vykonávania.

Typické prípady zlyhania a ako ich riešiť

Ak sa nasadenie SCCM dokončí s kódom 0, ale prístup sa nezobrazí, najprv skontrolujte cieľového používateľa počítača . Ak bol spustený ako SYSTEM a zadáte %USERPROFILE%\\Desktop, v interaktívnom profile sa nič nezobrazí. Na zobrazenie profilu pre všetkých použite C:\\Users\\Public\\Desktop.

V Intune pri generovaní skratiek pre Edge s argumentmi (napríklad URL adresa s kódovanými medzerami) skontrolujte, či sú úvodzovky v `-ShortcutArguments` správne a či text dorazil neporušený. Jedna nesprávne umiestnená medzera môže poškodiť cieľ .lnk.

V prípade firemných priečinkov so skratkami (napr. „SharePoint Shortcuts“) najskôr vytvorte priečinok na správnej pracovnej ploche a ak ho chcete zvýrazniť v Prieskumníkovi, pripnite ho na Rýchly prístup, ako sme videli v prípade Shell.Application.

Ak distribuujete vopred zostavený súbor .lnk v aktualizovanom balíku MSIX, neuvádzajte ho na verziovanú cestu v rámci WindowsApps. Použite AppExecutionAlias ​​​​a skopírujte ikonu mimo verziovaného priečinka.

Užitočné triky s premennými a cestami

Na písanie prenosných skriptov použite premenné prostredia ako %windir%, %systemroot%, %ProgramFiles% a podobné. Vo WSH ich môžete rozšíriť pomocou `ExpandEnvironmentStrings` a v PowerShelle sa na ne môžete odvolávať pomocou `$env:VARIABLE`.

Pri vytváraní dynamických ciest skontrolujte, či pracovný priečinok končí spätným lomítkom (\) , aby ste predišli duplicitným spätným lomítkom alebo porušeniu TargetPath pri zreťazení. Je to malé opatrenie, ktoré zabraňuje jemným chybám v produkcii.

Pre prístupy, ktoré vyžadujú zložité parametre, zvážte napísanie malého skriptu .cmd alebo .ps1 a vytvorenie prístupového bodu k nemu. Zjednoduší sa tým súbor .lnk a získate lepšiu kontrolu nad citovaním a poradím argumentov.

Ak potrebujete klávesové skratky, skúste si rezervovať kombinácie s písmenami, ktoré majú význam , a vyhnite sa konfliktom s bežnými skratkami. V prostrediach s mnohými aplikáciami zdokumentujte skratky, aby ich používatelia mohli používať bez pokusu a omylu.

V systéme Windows máte k dispozícii množstvo možností na vytváranie spoľahlivých a flexibilných skratiek. WSH je spoločným základom a okrem toho si môžete vybrať vrstvu: klasické skripty, moderný PowerShell alebo balenie MSIX s PSF, keď hľadáte opakovateľné procesy vo veľkom meradle. Kľúčom je výber správnej cesty, overenie kontextu vykonávania a neviazanosť na krehké cesty s verziami.