- WSH umožňuje vytvářet zkratky .lnk a .url z VBScript, VBA, VB6, VFP a PowerShell s objektem WScript.Shell.
- V IT nasazeních rozhoduje kontext (uživatel vs. SYSTÉM), zda se použije veřejná nebo uživatelská plocha.
- V MSIX/PSF se AppExecutionAlias vyhýbá cestám s verzemi a usnadňuje trvalý přístup.
- Ikony, argumenty, klávesové zkratky a styly oken jsou řízeny vlastnostmi zkratek.
Vytváření zkratek není jen pro pohodlí: je to způsob, jak automatizovat úkoly a zlepšit svou každodenní produktivitu. Windows. Windows Scénář Hostitel (WSH) Nabízí jednoduchý a výkonný způsob generování odkazů na aplikace, dokumenty a webové adresy z různých skriptovacích jazyků.
V této praktické příručce shrneme osvědčené techniky s VBScript, PowerShell, Visual Basic, Visual FoxPro a moderní scénáře s balíčky MSIX a PSFCílem je umožnit vám vybrat si přístup, který nejlépe vyhovuje vašemu prostředí (koncovému uživateli, IT, Intune/SCCM nebo balíček), a implementovat ho s jistotou.
Co je Windows Script Host a proč by vás to mohlo zajímat
Windows Script Host je infrastruktura, která umožňuje spouštět VBScript a JScript nativně ve Windows, kromě zpřístupnění objektového modelu COM pro automatizaci systémových úloh. Objekt WScript.Shell Je to klíčový prvek pro vytváření zástupců na ploše, zástupců v nabídce Start nebo speciálních složek.
WSH je součástí Windows od verzí jako například Windows 98 a 2000a lze jej přidat do starších edic, jako je Windows NT 4.0, pomocí volitelných komponent. V moderních systémech je integrován a v praxi stačí mít spustitelné soubory wscript.exe a cscript.exe pro spuštění skriptů.
Požadavky a osvědčené postupy před zahájením
Než začnete, je dobré si zopakovat několik základních bodů. Ověřte, zda je WSH k dispozici a neexistují žádné zásady blokující provádění skriptů. V podnikovém prostředí mohou objekty GPO a nastavení antivirového programu ovlivnit VBScript nebo PowerShell.
Vyhněte se zahlcování plochy zástupci. Vytvářejte přístupy pouze tehdy, když přinášejí přidanou hodnotu a pokud je distribuujete centrálně, definujte jasné kritérium (např. pracovní složky nebo aplikace kritické korporátní).
Pokud je skript spuštěn jako SYSTÉM nebo v kontextu stroje (Intune/SCCM), pečlivě si rozmyslete, kam soubor .lnk zapíšete: místo plochy aktuálního uživatele můžete použít veřejnou plochu (C:\\Users\\Public\\Desktop).
Zkontrolovat cílová cesta, oprávnění a proměnné prostředíTypickou chybou je odkazovat na cesty s měnícími se verzemi (Program Files\\WindowsApps) nebo používat UNC bez přístupu z účtu, na kterém je skript spuštěn.
Speciální složky a jak k nim vyřešit cesty
WSH překládá speciální názvy složek na jejich skutečnou cestu pomocí WshShell.SpecialFoldersWshShell.SpecialFoldersMezi nejužitečnější patří Plocha, StartMenu, Programy, Po spuštění nebo Oblíbené, a také jejich varianty pro všechny uživatele (AllUsersDesktop, AllUsersStartMenu atd.). To vám umožňuje být nezávislý/á jazyka a přesnou strukturu profilu.
Pokud pracujete s klasickým Visual Basic nebo chcete získat trasy z API, můžete použít SHGetSpecialFolderLocation/SHGetPathFromIDList zobrazit seznam cest, jako například Plocha, Nedávné programy nebo Dokumenty. Je to užitečné při integraci do aplikací které přímo nezávisí na objektu WScript.
Základní vzor: Vytváření zkratek pomocí WScript.Shell
Postup je jednoduchý: vytvořit instanci COM, vygenerovat zástupce, vyplnit vlastnosti a uložit. Tento vzorec se opakuje ve VBScriptu, VBA, VB6, VFP a PowerShellu. s drobnými syntaktickými odchylkami.
' 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í, mění se pouze syntaxe a místo, kde je kód hostován. Můžete vytvořit zástupce na ploše, přiřadit mu popis, ikonu atd. klávesová zkratka a styl 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 Visual FoxPro Můžete také použít objekt WScript.Shell. Myšlenka je stejná: vyhledejte Desktop, vytvořte .lnk a nastavte vlastnosti jako StylOkna, UmístěníIkony, CílováCesta nebo kombinaci kláves.
* 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
Ve všech případech je jádro stejné: VytvořitZkratku, CílováCesta, UložitOdtud si podle potřeby upravte argumenty, ikonu, pracovní adresář a styl okna.
Argumenty, styl okna, ikony a zkratky
Pokud je nutné spustit aplikaci s parametry, jednoduše vyplňte ArgumentyPro proces bota v konkrétní složce použijte .Pracovní adresář se správnou trasou.
Pro vzhled definujte .IkonaUmístění ukazující na soubor .ico nebo zdroj v souboru .exe/.dll (index můžete zadat za čárkou). Chování při otevírání je řízeno pomocí .StylOkna3 maximalizované, 7 minimalizované, 4 normální.
Pokud chcete kombinaci kláves, použijte Klávesová zkratka pomocí vzoru ALT+CTRL+písmeno (například ALT+CTRL+N). Toto přiřazení zrychluje otevírání, ale Není vhodné jich přidělovat příliš mnoho aby nenarušovaly systémové zkratky.
Zkratky URL (.url)
Kromě souborů .lnk aplikací může WSH vytvářet zkratky .url, které otevírají výchozí prohlížeč. TargetPath ukazuje na webovou adresu. a pokud potřebujete vlastní ikonu, můžete později upravit soubor .url a přidat do něj 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 přístup je ideální pro odkazy na SharePoint, intranetové nebo webové aplikace které chcete mít po ruce na pracovní ploše uživatele.
PowerShell pro IT: Intune, SCCM a rozsáhlá nasazení
PowerShell zahrnuje přístup ke stejnému modelu COM jako WSH, takže můžete vytvářet přístup a distribuovat ho hromadně. Obvykle je potřeba detekovat správnou plochu. (uživatelské nebo veřejné), generovat cílové složky a v případě potřeby připínat cesty v Rychlém pří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 implementacích s IntuneTento vzor umožňuje vytvořit složku na ploše a předat přístup Edgei s parametry, jako je například URL adresa SharePointu. Pokud je spuštěn jako SYSTEM, cílová plocha bude veřejná a viditelná pro všechny profily.
En SCCMPokud dáváte přednost nasazení předpřipraveného souboru .lnk, minimální příkaz může být jednoduchý jako jeho zkopírování na veřejnou plochu: Kopírovat položku \\server\\cesta\\access.lnk C:\\Uživatelé\\Veřejné\\PlochaPokud se nezobrazí, zkontrolujte tyto body:
- Kontext spuštěníUjistěte se, že program běží s dostatečnými oprávněními a na očekávaném uživateli/systému.
- Přístup ke sdílenému zdrojiSpuštěný účet musí být schopen číst cestu UNC.
- Trasy s mezeramiUzavřete -Cesta a -Cíl do uvozovek.
- BitnessVe smíšených 32/64bitových prostředích potvrzuje, že nedochází k nežádoucím přesměrováním.
Připnout k rychlému přístupu pomocí Shell.Application
Kromě plochy si můžete složky připnout i na Rychlý přístup s objektem COM Shell.Application. To je užitečné, když vytvoříte cestu vazby a chcete, aby byla přístupná v Průzkumníku.
# 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")
}
Pokud spravujete týmy a chcete, aby uživatelé rychle našli své zkratky, Tato malá akce má smysl v jejich každodenním životě.
MSIX a PSF: Vytváření přístupu bez spoléhání se na verzované cesty
Když balíte aplikace s MSIX, instalační cesta obsahuje verzi (například C:\\Program Files\\WindowsApps\\MyApp_1.0.0.0_x86__…). Mění se s každou aktualizací, takže není vhodné nastavovat soubor .lnk s touto cestou. Řešení: Alias spuštění aplikaceDefinováním aliasu v manifestu můžete spustit aplikaci s %localappdata%\\Microsoft\\WindowsApps\\myapp.exe bez nutnosti vázat se na verzi.
Chcete-li to provést, přidejte jmenné prostory do manifestu (uap3 a desktop) a vytvořte rozšíření Alias spuštění windows.app odkazující na spustitelný soubor balíčku. Nezapomeňte zahrnout názvy do IgnorableNamespaces, aby je manifest rozpoznal.
Poté můžete změnit vstupní bod aplikace na PSFLauncher32.exe/PSFLauncher64.exe (v závislosti na architektuře) a delegovat vytvoření přístupu na spouštěcí skript definovaný v souboru config.json pomocí PSF. Skript se spustí jednou při první inicializaci.
{
"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 zkopírovat hotový soubor .lnk z balíčku na plochu uživatele a také přenést ikonu do pracovního prostoru. LocalCache\\Roaming který zůstává mezi verzemi stabilní.
# 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 přístupem zajistíte, že přístup bude fungovat i po aktualizaci, bez dotyku .lnk v každé verziPokud cesta ukazuje na alias (například %localappdata%\\Microsoft\\WindowsApps\\myapp.exe), bude cesta stále platná.
Ošetření chyb a doporučená validace
Před generováním souboru .lnk je vhodné ověřit, zda CílováCesta existuje (pokud nepoužíváte proměnné jako %windir% nebo aliasy). Ve VBA/VB6 můžete zobrazit upozornění, pokud spustitelný soubor chybí, nebo operaci zrušit; v PowerShellu použijte Test-Path k ověření, zda je cesta přístupná.
Pokud je cesta k ikoně síť .ico, užitečnou taktikou je zkopírovat jej do dočasné složky uživatele nebo složky APPDATA a odtud na něj odkazovat. Takto se vyhnete rozbitým ikonám pokud síťový zdroj není k dispozici.
Při úpravě zkratek .url, pokud potřebujete vlastní ikonu, znovu otevřete soubor jako text a přidejte ji IconFile a IconIndex na konci. Díky tomu máte úplnou kontrolu nad jeho vzhledem, aniž byste se museli spoléhat na prohlížeč.
Při ukončení COM uvolněte objekty pomocí ReleaseComObject v PowerShellu nebo přiřadit Nothing ve VB/VBA. Je to drobný detail, ale pomáhá předcházet zablokování zdrojů v intenzivních popravách.
Typické případy selhání a jak je řešit
Pokud nasazení pomocí SCCM končí s kódem 0, ale přístup se nezobrazí, nejprve zkontrolujte cílový uživatel plochyPokud jste systém spouštěli jako SYSTEM a do interaktivního profilu jste zadali %USERPROFILE%\Desktop, nic se nezobrazí. Pro zobrazení profilu všem použijte C:\Users\Public\Desktop.
V Intune při generování výzev Edge s argumenty (například URL s kódovanými mezerami) potvrďte, že uvozovky jsou v pořádku v -ShortcutArguments a text dorazí beze změny. Jeden prostor mimo místo může zvrátit osud souboru .lnk.
U firemních zástupců (např. „Zástupci SharePointu“) nejprve vytvořte složku na správné ploše a pokud ji chcete zvýraznit v Průzkumníku, ukotvení pro Rychlý přístup jak jsme viděli u Shell.Application.
Pokud distribuujete již sestavený soubor .lnk v balíčku MSIX, který se aktualizuje, neukazujte jej na cestu s verzí v rámci WindowsApps. Použít AppExecutionAlias a zkopírujte ikonu z verzované složky.
Užitečné triky s proměnnými a cestami
Pro psaní přenositelných skriptů se spoléhejte na Proměnné prostředí: %windir%, %systemroot%, %ProgramFiles% a podobné. Ve WSH je můžete rozbalit pomocí Rozbalit řetězce prostředía v PowerShellu se na ně můžete odkazovat pomocí $env:VARIABLE.
Při vytváření dynamických tras zkontrolujte, zda pracovní složka končí na \ aby se zabránilo duplikování pruhů nebo přerušení TargetPath při zřetězení. Je to malá zábradlí, která vyhněte se drobným chybám ve výrobě.
U klávesových zkratek, které vyžadují složité parametry, zvažte napsání malého skriptu .cmd nebo .ps1, na který by zkratka odkazovala. Takto zjednodušíte soubor .lnk. a máte lepší kontrolu nad citováním a pořadím argumentů.
Pokud potřebujete klávesové zkratky, zkuste si rezervovat jejich kombinace pomocí významná písmena a vyhněte se kolizím s běžnými zkratkami. V prostředích s mnoha aplikacemi zdokumentujte zkratky, aby je uživatel mohl využijte výhod bez pokusů a omylů.
V systému Windows máte řadu možností, jak spolehlivě a flexibilně vytvářet zástupce. WSH je společná báze... a navíc si můžete vybrat vrstvu: klasické skripty, moderní PowerShell nebo MSIX balíčkování s PSF, pokud hledáte opakovatelné procesy ve velkém měřítku. Klíčem je vybrat správnou cestu, ověřit kontext spuštění a vyhnout se uvěznění v křehkých cestách s verzemi.
Vášnivý spisovatel o světě bytů a technologií obecně. Rád sdílím své znalosti prostřednictvím psaní, a to je to, co budu dělat v tomto blogu, ukážu vám všechny nejzajímavější věci o gadgetech, softwaru, hardwaru, technologických trendech a dalších. Mým cílem je pomoci vám orientovat se v digitálním světě jednoduchým a zábavným způsobem.