Izradite prilagođene prečace pomoću Windows Script Hosta

Zadnje ažuriranje: 29/09/2025
Autor: Isaac
  • WSH vam omogućuje stvaranje .lnk i .url prečaca iz VBScripta, VBA, VB6, VFP-a i PowerShell s objektom WScript.Shell.
  • U IT implementacijama, kontekst (korisnik vs. SUSTAV) odlučuje hoće li se koristiti javna ili korisnička radna površina.
  • S MSIX/PSF-om, AppExecutionAlias ​​​​izbjegava verzionirane putanje i olakšava trajni pristup.
  • Ikone, argumenti, prečaci i stilovi prozora kontroliraju se svojstvima prečaca.

Prečaci u sustavu Windows s WSH-om

Stvaranje prečaca nije samo praktičnost: to je način automatizacije zadataka i poboljšanja vaše svakodnevne produktivnosti. Windows. Windows Script Domaćin (WSH) Nudi jednostavan i moćan način generiranja poveznica na aplikacije, dokumente i web adrese iz više skriptnih jezika.

U ovom praktičnom vodiču objedinjujemo provjerene tehnike s VBScript, PowerShell, Visual Basic, Visual FoxPro i moderni scenariji s paketima MSIX i PSFCilj je omogućiti vam da odaberete pristup koji najbolje odgovara vašem okruženju (krajnji korisnik, IT, Intune/SCCM ili paketni) i da ga implementirate s povjerenjem.

Što je Windows Script Host i zašto bi vas to moglo zanimati

Windows Script Host je infrastruktura koja vam omogućuje pokretanje VBScript i JScript izvorno na Windowsima, uz izlaganje COM objektnog modela za automatizaciju sistemskih zadataka. Objekt WScript.Shell To je ključni dio za stvaranje prečaca na radnoj površini, prečaca u izborniku Start ili posebnih mapa.

WSH je dio Windowsa od verzija kao što su Windows 98 i 2000i može se dodati starijim izdanjima kao što je Windows NT 4.0 pomoću dodatnih komponenti. U modernim sustavima dolazi integrirano i u praksi je dovoljno imati izvršne datoteke wscript.exe i cscript.exe za pokretanje skripti.

Primjeri skripti za prečace

Zahtjevi i najbolje prakse prije početka

Prije početka, dobro je pregledati neke osnovne točke. Provjerite je li WSH dostupan i ne postoje pravila koja blokiraju izvršavanje skripti. U korporativnim okruženjima, GPO-i i antivirusne postavke mogu utjecati na VBScript ili PowerShell.

Izbjegavajte zatrpavanje radne površine prečacima. Stvarajte pristupe samo kada dodaju vrijednost a ako ih distribuirate centralno, definirajte jasan kriterij (npr. radne mape ili aplikacije kritično korporativno).

Ako se skripta pokrene kao SUSTAV ili u strojnom kontekstu (Intune/SCCM), dobro razmislite gdje zapisujete .lnk: možda biste htjeli koristiti javnu radnu površinu (C:\\Users\\Public\\Desktop) umjesto radne površine trenutnog korisnika.

Provjeri odredišna putanja, dozvole i varijable okruženjaTipična pogreška je ukazivanje na putanje s promjenjivim verzijama (Program Files\\WindowsApps) ili korištenje UNC-a bez pristupa s računa koji pokreće skriptu.

Posebne mape i kako razriješiti njihove putanje

WSH razrješava posebna imena mapa u njihovu stvarnu putanju pomoću WshShell.PosebneMapeMeđu najkorisnijima su Desktop, StartMenu, Programs, Startup ili Favoriti, kao i njihove varijante za sve korisnike (AllUsersDesktop, AllUsersStartMenu itd.). To vam omogućuje da budete neovisni jezika i točne strukture profila.

Ako radite s klasičnim Visual Basicom ili želite dobiti rute iz API-ja, možete koristiti SHGetSpecialFolderLokacija/SHGetPathFromIDList za popis putanja kao što su Radna površina, Nedavni programi ili Dokumenti. Korisno je prilikom integracije u aplikacije koji ne ovise izravno o WScript objektu.

Osnovni obrazac: Izrada prečaca pomoću WScript.Shell-a

Tijek je jednostavan: stvorite COM instancu, generirajte prečac, ispunite svojstva i spremite. Ovaj se obrazac ponavlja u VBScriptu, VBA, VB6, VFP-u i PowerShellu. s manjim sintaktičkim varijacijama.

' 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 Uzorak je ekvivalentan, mijenjaju se samo sintaksa i mjesto gdje se kod nalazi. Možete stvoriti prečac na radnoj površini, dodijeliti mu opis, ikonu, prečac i stil prozora:

' 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 Također možete koristiti objekt WScript.Shell. Ideja je identična: locirajte Desktop, stvorite .lnk i postavite svojstva poput StilProzora, LokacijaIkone, PutCilja ili kombinaciju tipki.

* 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

U svim slučajevima, jezgra je ista: StvoriPrečac, CiljniPut, SpremiOdatle prilagodite argumente, ikonu, radni direktorij i stil prozora prema potrebi.

  Kako jednostavno strujati videozapise preko mreže pomoću VLC-a

Argumenti, stil prozora, ikone i prečaci

Kada pristup mora pokrenuti aplikaciju s parametrima, jednostavno ispunite ArgumentiZa proces čizma u određenoj mapi, koristite .RadniImenik s pravom rutom.

Za izgled, definirajte Lokacija ikone pokazujući na .ico ili resurs u .exe/.dll datoteci (možete navesti indeks nakon zareza). Ponašanje otvaranja kontrolira se pomoću .StilProzora3 maksimizirano, 7 minimizirano, 4 normalno.

Ako želite kombinaciju tipki, koristite Tipkovni prečac s uzorkom ALT+CTRL+Slovo (na primjer, ALT+CTRL+N). Ovo dodjeljivanje ubrzava otvaranje, ali Nije preporučljivo dodijeliti previše kako ne bi ometali sistemske prečace.

Prečaci URL-ova (.url)

Osim .lnk datoteka aplikacije, WSH može stvoriti .url prečace koji otvaraju zadani preglednik. TargetPath pokazuje na web adresu a ako vam je potrebna vlastita ikona, kasnije možete urediti .url datoteku kako biste dodali IconFile i 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

Ovaj pristup je idealan za poveznice na SharePoint, intranet ili web aplikacije koje želite ostaviti pri ruci na korisnikovoj radnoj površini.

PowerShell za IT: Intune, SCCM i implementacije velikih razmjera

PowerShell uključuje pristup istom COM modelu kao i WSH, tako da možete kreirati pristup i distribuirati ga masovno. Uobičajena stvar je otkriti ispravnu radnu površinu (korisničke ili javne), generirajte odredišne ​​mape i, ako je potrebno, prikvačite putanje u Brzom pristupu.

# 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

U implementacijama s IntuneOvaj uzorak vam omogućuje stvaranje mape na radnoj površini i prosljeđivanje pristupa Edgeu s parametrima kao što je SharePoint URL. Ako se pokrene kao SYSTEM, ciljna radna površina bit će javna, vidljiva svim profilima.

  Naučite kako spriječiti druge da kontroliraju vaš Chromecast stroj

En SCCMAko radije koristite unaprijed izrađenu .lnk datoteku, minimalna naredba može biti jednostavna kao kopiranje na javnu radnu površinu: Kopiraj stavku \\poslužitelj\\putanja\\pristup.lnk C:\\Korisnici\\Javno\\Radna površinaAko se ne pojavi, provjerite ove točke:

  • Kontekst izvršenjaProvjerite radi li program s dovoljnim dozvolama i na očekivanom korisniku/sustavu.
  • Pristup dijeljenom resursuIzvršni račun mora moći čitati UNC putanju.
  • Rute s razmacimaStavite -Put i -Odredište u navodnike.
  • BitnostU mješovitim 32/64-bitnim okruženjima potvrđuje da nema neželjenih preusmjeravanja.

Prikvači na brzi pristup pomoću Shell.Application

Osim na radnu površinu, mape možete prikvačiti i na Brzi pristup s COM objektom Shell.Application. Ovo je korisno kada stvarate putanju povezivanja i želite da bude dostupna u Exploreru.

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

Ako upravljate timovima i želite da korisnici brzo pronađu svoje prečace, Ova mala akcija čini razliku u njihovom danu u dan.

MSIX i PSF: Stvaranje pristupa bez oslanjanja na verzionirane putove

Kada pakirate aplikacije s MSIX, instalacijska putanja uključuje verziju (na primjer, C:\\Program Files\\WindowsApps\\MyApp_1.0.0.0_x86__…). Mijenja se sa svakim ažuriranjem, stoga nije dobra ideja postaviti .lnk s tom putanjom. Rješenje: AppExecutionAliasDefiniranjem aliasa u manifestu možete pokrenuti aplikaciju s %localappdata%\\Microsoft\\WindowsApps\\myapp.exe bez vezanja za verziju.

Da biste to učinili, dodajte imenske prostore u manifest (uap3 i desktop) i stvorite proširenje windows.appExecutionAlias pokazujući na izvršnu datoteku paketa. Ne zaboravite uključiti imena u IgnorableNamespaces kako bi ih manifest prepoznao.

Nakon toga, ulaznu točku aplikacije možete promijeniti u PSFLauncher32.exe/PSFLauncher64.exe (ovisno o arhitekturi) i delegirati stvaranje pristupa skripti za pokretanje definiranoj u config.json pomoću PSF-a. Skripta se izvršava jednom pri prvoj inicijalizaciji.

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

PowerShell createshortcut.ps1 Možete kopirati gotovu .lnk datoteku iz paketa na radnu površinu korisnika, a također i donijeti ikonu u radni prostor. Lokalna predmemorija\\Roaming koji ostaje stabilan između verzija.

# 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

Ovim pristupom osiguravate da pristup radi nakon ažuriranja, bez diranja .lnk datoteke u svakoj verzijiAko put pokazuje na alias (na primjer, %localappdata%\\Microsoft\\WindowsApps\\myapp.exe), put će i dalje biti valjan.

Rješavanje pogrešaka i preporučene validacije

Prije generiranja .lnk datoteke preporučljivo je provjeriti je li Ciljni put postoji (osim ako ne koristite varijable poput %windir% ili aliase). U VBA/VB6 možete upozoriti ako nedostaje izvršna datoteka ili otkazati operaciju; u PowerShellu upotrijebite Test-Path za provjeru je li put dostupan.

  Kako koristiti FaceTime na računalu sa sustavom Windows

Ako je put ikone .ico mreža, korisna taktika je kopirati ga u korisnikovu privremenu mapu ili mapu APPDATA i odatle ga referencirati. Ovako ćete izbjeći slomljene ikone ako mrežni resurs nije dostupan.

Prilikom uređivanja .url prečaca, ako vam je potrebna vlastita ikona, ponovno otvorite datoteku kao tekst i dodajte IconFile i IconIndex na kraju. To vam daje potpunu kontrolu nad njegovim izgledom bez oslanjanja na preglednik.

Kada završite s COM-om, oslobodite objekte s ReleaseComObject u PowerShellu ili dodijeliti Nothing u VB/VBA. To je manji detalj, ali pomaže u izbjegavanju zastoja resursa u intenzivnim pogubljenjima.

Tipični slučajevi kvarova i kako ih riješiti

Ako implementacija od strane SCCM-a završi s kodom 0, ali se pristup ne pojavi, prvo provjerite ciljni korisnik radne površineAko ste pokrenuli sustav kao SYSTEM i u interaktivni profil upisali %USERPROFILE%\Desktop, nećete ništa vidjeti. Koristite C:\Users\Public\Desktop da biste ga učinili vidljivim svima.

U Intuneu, kada generirate Edge upite s argumentima (na primjer, URL s kodiranim razmacima), potvrdite to navodnici su u redu u -ShortcutArguments i tekst stiže netaknut. Jedan prostor nije na svom mjestu može prekinuti sudbinu .lnk datoteke.

Za korporativne mape prečaca (npr. "SharePoint prečaci") prvo stvorite mapu na odgovarajućoj radnoj površini, a ako je želite označiti u Exploreru, sidro za brzi pristup kao što smo vidjeli kod Shell.Application.

Ako distribuirate već izgrađeni .lnk u MSIX paketu koji se ažurira, nemojte ga usmjeravati na verziranu putanju unutar WindowsApps. Koristi AppExecutionAlias i kopirajte ikonu iz verzionirane mape.

Korisni trikovi s varijablama i putovima

Za pisanje prenosivih skripti, oslonite se na Varijable okoline: %windir%, %systemroot%, %ProgramFiles% i slično. U WSH-u ih možete proširiti s Proširi nizove okruženja, a u PowerShellu im se možete pozvati putem $env:VARIABLE.

Prilikom izgradnje dinamičkih ruta provjerite je li radna mapa završava s \ kako bi se izbjeglo dupliciranje stupaca ili prekidanje TargetPatha prilikom spajanja. To je mala zaštitna ograda koja izbjegavajte suptilne pogreške u proizvodnji.

Za prečace koji zahtijevaju složene parametre, razmislite o pisanju male .cmd ili .ps1 skripte i postavljanju prečaca koji pokazuje na nju. Ovako se pojednostavljuje .lnk i imate bolju kontrolu nad citiranjem i redoslijedom argumenata.

Ako trebate prečace, pokušajte rezervirati kombinacije s značajna slova i izbjegavajte sukobe s uobičajenim prečacima. U okruženjima s mnogo aplikacija dokumentirajte prečace kako bi korisnik mogao iskoristite prednosti bez pokušaja i pogrešaka.

Imate niz mogućnosti za stvaranje prečaca u sustavu Windows na pouzdan i fleksibilan način. WSH je zajednička baza, a uz to možete odabrati sloj: klasične skripte, moderni PowerShell ili MSIX pakiranje s PSF-om kada tražite ponovljive procese u velikom opsegu. Ključno je odabrati pravi put, validirati kontekst izvršavanja i izbjeći zatvaranje u krhke, verzionirane puteve.