- 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.
Vytváranie skratiek nie je len pre pohodlie: je to spôsob, ako automatizovať úlohy a zlepšiť svoju každodennú produktivitu. Windows. Windows Skript Hostiteľ (WSH) Ponúka jednoduchý a výkonný spôsob generovania odkazov na aplikácie, dokumenty a webové adresy z viacerých skriptovacích jazykov.
V tejto praktickej príručke spájame overené techniky s VBScript, PowerShell, Visual Basic, Visual FoxPro a moderné scenáre s balíkmi MSIX a PSFCieľom je umožniť vám vybrať si prístup, ktorý najlepšie vyhovuje vášmu prostrediu (koncový používateľ, IT, Intune/SCCM alebo balíkový), a implementovať 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á vám umožňuje spúšťať VBScript a JScript natívne v systéme Windows, okrem sprístupnenia objektového modelu COM na automatizáciu systémových úloh. Objekt WScript.Shell Je to kľúčový prvok na vytváranie skratiek na pracovnej ploche, skratiek v ponuke Štart alebo špeciálnych priečinkov.
WSH je súčasťou systému Windows od verzií ako napríklad Windows 98 a 2000a možno ho pridať do starších vydaní, ako napríklad Windows NT 4.0, pomocou voliteľných komponentov. V moderných systémoch je integrovaný a v praxi stačí mať spustiteľné súbory wscript.exe a cscript.exe na spustenie skriptov.

Požiadavky a osvedčené postupy pred začatím
Predtým, ako začnete, je dobré si zopakovať niekoľko základných bodov. Overte, či je WSH k dispozícii a neexistujú žiadne politiky blokujúce vykonávanie skriptov. V podnikových prostrediach môžu objekty GPO a nastavenia antivírusového programu ovplyvniť VBScript alebo PowerShell.
Vyhnite sa zahlteniu pracovnej plochy skratkami. Vytvárajte prístupy iba vtedy, keď prinášajú pridanú hodnotu a ak ich distribuujete centrálne, definujte jasné kritérium (napr. pracovné priečinky alebo aplikácie kritická korporátna).
Ak sa skript spustí ako SYSTÉM alebo v kontexte stroja (Intune/SCCM), dobre 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).
Skontrolovať cieľová cesta, povolenia a premenné prostrediaTypickou chybou je ukazovať na cesty s meniacimi sa verziami (Program Files\\WindowsApps) alebo používať UNC bez prístupu z účtu, 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ú cestu pomocou WshShell.SpecialFoldersMedzi najužitočnejšie patria Plocha, ŠtartMenu, Programy, Po spustení alebo Obľúbené položky, ako aj ich varianty pre všetkých používateľov (AllUsersDesktop, AllUsersStartMenu atď.). To vám umožňuje byť nezávislý jazyka a presná štruktúra profilu.
Ak pracujete s klasickým Visual Basicom alebo chcete získať trasy z API, môžete použiť SHGetSpecialFolderLocation/SHGetPathFromIDList zobraziť cesty, ako napríklad Plocha, Nedávne programy alebo Dokumenty. Je to užitočné pri integrácii do aplikácií ktoré priamo nezávisia od objektu WScript.
Základný vzor: Vytváranie skratiek pomocou WScript.Shell
Postup je jednoduchý: vytvorte inštanciu COM, vygenerujte skratku, vyplňte vlastnosti a uložte. Tento vzor sa opakuje vo VBScript, VBA, VB6, VFP a PowerShell s menšími syntaktickými odchýlkami.
' 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 VBA/VB6 Vzor je ekvivalentný, mení sa iba syntax a miesto, kde je kód umiestnený. Môžete vytvoriť odkaz na pracovnej ploche, priradiť mu popis, ikonu, klávesová skratka 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
s VisualFoxPro Môžete tiež použiť objekt WScript.Shell. Myšlienka je rovnaká: vyhľadajte Desktop, vytvorte .lnk a nastavte vlastnosti ako ŠtýlOkna, UmiestnenieIkony, CestaCieľu alebo kombináciu klávesov.
* 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é: Vytvoriť skratku, CieľováCesta, UložiťOdtiaľ podľa potreby prispôsobte argumenty, ikonu, pracovný adresár a štýl okna.
Argumenty, štýl okna, ikony a skratky
Keď je potrebné spustiť aplikáciu s parametrami, jednoducho vyplňte .ArgumentyPre proces topánka v konkrétnom priečinku použite .Pracovný adresár so správnou trasou.
Pre vzhľad definujte .IkonaUmiestnenie ukazujúci na súbor .ico alebo zdroj v súbore .exe/.dll (index môžete zadať za čiarkou). Správanie pri otváraní je riadené pomocou .ŠtýlOkna3 maximalizované, 7 minimalizované, 4 normálne.
Ak chcete kombináciu klávesov, použite Klávesová skratka pomocou vzoru ALT+CTRL+písmeno (napríklad ALT+CTRL+N). Toto priradenie zrýchľuje otváranie, ale Nie je vhodné priradiť príliš veľa aby nerušili systémové skratky.
Skratky URL (.url)
Okrem súborov .lnk aplikácií dokáže WSH vytvárať skratky .url, ktoré otvárajú predvolený prehliadač. TargetPath ukazuje na webovú adresu a ak potrebujete vlastnú ikonu, môžete neskôr upraviť súbor .url 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, intranetové alebo webové aplikácie ktoré chcete mať poruke 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ť prístupy a distribuovať ich hromadne. Zvyčajne je potrebné zistiť správnu pracovnú plochu (používateľské alebo verejné), generovať cieľové priečinky a v prípade potreby pripnúť cesty v Rýchlom prístupe.
# 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 s IntuneTento vzor vám umožňuje vytvoriť priečinok na pracovnej ploche a poskytnúť prístup do prehliadača Edge s parametrami, ako je napríklad URL adresa SharePointu. Ak sa spustí ako SYSTEM, cieľová pracovná plocha bude verejná, viditeľná pre všetky profily.
En SCCMAk uprednostňujete nasadenie vopred vytvoreného súboru .lnk, minimálny príkaz môže byť jednoduchý ako jeho skopírovanie na verejnú pracovnú plochu: Kopírovať položku \\server\\cesta\\prístup.lnk C:\\Používatelia\\Verejné\\PlochaAk 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 si môžete priečinky pripnúť aj na Rýchly prístup s objektom Shell.Application COM. Toto je užitočné, keď vytvoríte cestu väzby 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 spravujete tímy a chcete, aby používatelia rýchlo našli svoje skratky, Táto malá akcia má zmysel v ich každodenných dňoch.
MSIX a PSF: Vytvorenie prístupu bez spoliehania sa na verziované cesty
Keď balíte aplikácie s MSIX, inštalačná cesta obsahuje verziu (napríklad C:\\Program Files\\WindowsApps\\MyApp_1.0.0.0_x86__…). Mení sa s každou aktualizáciou, takže nie je vhodné nastavovať súbor .lnk s touto cestou. Riešenie: Alias spustenia aplikácieDefinovaním aliasu v manifeste môžete spustiť aplikáciu s %localappdata%\\Microsoft\\WindowsApps\\myapp.exe bez toho, aby ste boli viazaní na verziu.
Ak to chcete urobiť, pridajte menné priestory do manifestu (uap3 a desktop) a vytvorte rozšírenie windows.appExecutionAlias ukazujúci na spustiteľný súbor balíka. Nezabudnite zahrnúť názvy do IgnorableNamespaces, aby ich manifest rozpoznal.
Následne môžete zmeniť vstupný bod aplikácie na PSFLauncher32.exe/PSFLauncher64.exe (v závislosti od architektúry) a delegovať vytvorenie prístupu 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
}
}
]
}
PowerShell createshortcut.ps1 Môžete skopírovať hotový súbor .lnk z balíka na pracovnú plochu používateľa a tiež preniesť ikonu do pracovného priestoru. Lokálna vyrovnávacia pamäť\\Roaming ktorý zostáva 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
Týmto prístupom zabezpečíte, že prístup bude fungovať aj po aktualizácii, bez dotyku .lnk v každej verziiAk cesta odkazuje na alias (napríklad %localappdata%\\Microsoft\\WindowsApps\\myapp.exe), cesta bude stále platná.
Ošetrenie chýb a odporúčané validácie
Pred vygenerovaním súboru .lnk je vhodné overiť, či CieľováCesta existuje (pokiaľ nepoužívate premenné ako %windir% alebo aliasy). Vo VBA/VB6 môžete zobraziť upozornenie, ak chýba spustiteľný súbor, alebo operáciu zrušiť; v PowerShell použite Test-Path na kontrolu, či je cesta prístupná.
Ak je cesta k ikone sieť .ico, užitočnou taktikou je skopírovať ho do dočasného priečinka používateľa alebo priečinka APPDATA a odtiaľ sa naň odkazovať. Takto sa vyhnete poškodeným ikonám ak sieťový zdroj nie je k dispozícii.
Ak pri úprave skratiek .url potrebujete vlastnú ikonu, znova otvorte súbor ako text a pridajte Súbor ikon a index ikon na konci. To vám dáva úplnú kontrolu nad jeho vzhľadom bez toho, aby ste sa museli spoliehať na prehliadač.
Keď ukončíte COM, uvoľnite objekty pomocou ReleaseComObject v PowerShelle alebo priradiť Nothing vo VB/VBA. Je to drobný detail, ale pomáha predchádzať zaseknutiu zdrojov pri intenzívnych popravách.
Typické prípady zlyhania a ako ich riešiť
Ak nasadenie pomocou SCCM skončí s kódom 0, ale prístup sa nezobrazí, najprv skontrolujte cieľový používateľ počítačaAk ste spúšťali systém ako SYSTEM a do interaktívneho profilu ste zadali %USERPROFILE%\Desktop, nič sa nezobrazí. Na zobrazenie profilu pre všetkých použite priečinok C:\Users\Public\Desktop.
V Intune, keď generujete výzvy Edge s argumentmi (napríklad URL adresa s kódovanými medzerami), potvrďte, že úvodzovky sú v poriadku v -ShortcutArguments a text dorazí neporušený. Jeden priestor mimo miesta môže zmariť osud súboru .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, ukotvenie pre Rýchly prístup ako sme videli v prípade Shell.Application.
Ak distribuujete už zostavený súbor .lnk v balíku MSIX, ktorý sa aktualizuje, neusmerňujte ho na cestu s verziami v rámci WindowsApps. Použite AppExecutionAlias a skopírujte ikonu z verziovaného priečinka.
Užitočné triky s premennými a cestami
Na písanie prenosných skriptov sa spoľahnite na Premenné prostredia: %windir%, %systemroot%, %ProgramFiles% a podobné. Vo WSH ich môžete rozšíriť pomocou RozbaliťReťazceProstrediaa v PowerShelle sa na ne môžete odvolávať pomocou $env:VARIABLE.
Pri vytváraní dynamických trás skontrolujte, či pracovný priečinok končí na \ aby sa predišlo duplicite stĺpcov alebo prerušeniu TargetPath pri zreťazení. Je to malá ochranná bariéra, ktorá vyhýbajte sa jemným chybám vo výrobe.
Pre skratky, ktoré vyžadujú zložité parametre, zvážte napísanie malého skriptu .cmd alebo .ps1 a nastavenie skratky tak, aby naň odkazovala. Takto zjednodušíte súbor .lnk a máte lepšiu kontrolu nad citovaním a poradím argumentov.
Ak potrebujete klávesové skratky, skúste si rezervovať kombinácie pomocou významné písmená a vyhnite sa konfliktom s bežnými skratkami. V prostrediach s mnohými aplikáciami zdokumentujte skratky, aby ich používateľ mohol využiť výhody bez pokusov a omylov.
V systéme Windows máte k dispozícii množstvo možností na vytváranie skratiek spoľahlivým a flexibilným spôsobom. WSH je spoločný základ, a navyše 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 vybrať správnu cestu, overiť kontext vykonávania a vyhnúť sa uväzneniu v krehkých, verziovaných cestách.
Vášnivý spisovateľ o svete bajtov a technológií všeobecne. Milujem zdieľanie svojich vedomostí prostredníctvom písania, a to je to, čo urobím v tomto blogu, ukážem vám všetko najzaujímavejšie o gadgetoch, softvéri, hardvéri, technologických trendoch a ďalších. Mojím cieľom je pomôcť vám orientovať sa v digitálnom svete jednoduchým a zábavným spôsobom.