Looge kohandatud otseteid Windows Script Hostiga

Viimane uuendus: 29/09/2025
Autor: Isaac
  • WSH võimaldab teil luua .lnk ja .url otseteid VBScriptist, VBA-st, VB6-st, VFP-st ja PowerShell WScript.Shell objektiga.
  • IT-juurutustes otsustab kontekst (kasutaja vs SÜSTEEM), kas kasutada avalikku või kasutaja töölauda.
  • MSIX/PSF-i puhul väldib AppExecutionAlias ​​versioonitud teid ja hõlbustab püsivat juurdepääsu.
  • Ikoone, argumente, kiirklahve ja akende stiile kontrollitakse otseteede omaduste abil.

Windowsi otseteed WSH-ga

Otseteede loomine pole lihtsalt mugavus: see on viis ülesannete automatiseerimiseks ja igapäevase tootlikkuse parandamiseks. Windows. Windows Script Host (WSH) See pakub lihtsat ja võimsat viisi linkide genereerimiseks rakendustele, dokumentidele ja veebiaadressidele mitmest skriptimiskeelest.

Selles praktilises juhendis koondame tõestatud tehnikaid VBScript, PowerShell, Visual Basic, Visual FoxPro ja kaasaegsed stsenaariumid pakettidega MSIX ja polüesterstaapelkiudEesmärk on võimaldada teil valida lähenemisviisi, mis sobib kõige paremini teie keskkonnaga (lõppkasutaja, IT, Intune/SCCM või pakettlahendus), ja seda enesekindlalt rakendada.

Mis on Windows Script Host ja miks see teile huvi pakub?

Windowsi skripti host on infrastruktuur, mis võimaldab teil käivitada VBScript ja JScript natiivselt Windowsis, lisaks COM-objektimudeli avaldamisele süsteemiülesannete automatiseerimiseks. WScript.Shelli objekt See on võtmeelement töölaua otseteede, menüü Start otseteede või spetsiaalsete kaustade loomiseks.

WSH on olnud Windowsi osa alates sellistest versioonidest nagu Windows 98 ja 2000ja seda saab lisada vanematele versioonidele, näiteks Windows NT 4.0, valikuliste komponentide abil. Kaasaegsetes süsteemides on see integreeritud Ja praktikas piisab skriptide käivitamiseks käivitatavatest failidest wscript.exe ja cscript.exe.

Näited otseteede skriptidest

Nõuded ja parimad tavad enne alustamist

Enne alustamist on hea mõte üle vaadata mõned põhipunktid. Veenduge, et WSH on saadaval ja skriptide käivitamist blokeerivad poliitikad puuduvad. Ettevõtte keskkondades võivad rühmapoliitika objektid ja viirusetõrje seaded mõjutada VBScripti või PowerShelli.

Väldi töölaua risustamist otseteedega. Loo ligipääse ainult siis, kui need lisavad väärtust ja kui levitate neid tsentraalselt, määrake selge kriteerium (nt töökaustad või apps kriitiline korporatiivne).

Kui skript käivitatakse kujul SÜSTEEM või masina kontekstis (Intune/SCCM) mõtle hoolikalt, kuhu sa .lnk faili kirjutad: praeguse kasutaja töölaua asemel võid soovida kasutada avalikku töölauda (C:\\Users\\Public\\Desktop).

Kontrolli sihtkoha tee, õigused ja keskkonnamuutujadTüüpiline viga on osutada muutuvate versioonidega teedele (Program Files\\WindowsApps) või kasutada UNC-d ilma skripti käitava konto juurdepääsuta.

Spetsiaalsed kaustad ja nende teede lahendamine

WSH lahendab erikaustade nimed nende tegelikuks teeks, kasutades WshShell.SpecialFoldersKõige kasulikumate hulgas on Desktop (Töölaud), StartMenu (StartMenu), Programs (Programmid), Startup (Käivitus) või Favorites (Lemmikud), samuti nende variandid kõigile kasutajatele (AllUsersDesktop, AllUsersStartMenu jne). See võimaldab sul olla iseseisev keele ja profiili täpse struktuuri.

Kui töötate klassikalise Visual Basicuga või soovite marsruute API kaudu hankida, saate seda kasutada SHGetSpecialFolderLocation/SHGetPathFromIDList selliste teede loetlemiseks nagu Töölaud, Hiljutised programmid või Dokumendid. See on kasulik rakendustesse integreerimisel mis ei sõltu otseselt WScript-objektist.

Põhimuster: otseteede loomine WScript.Shelli abil

Töövoog on lihtne: loo COM-eksemplar, genereeri otsetee, täida atribuudid ja salvesta. Seda mustrit korratakse VBScriptis, VBA-s, VB6-s, VFP-s ja PowerShellis. väikeste süntaktiliste variatsioonidega.

' 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 Muster on samaväärne, muutub ainult süntaks ja koodi majutamise koht. Saate luua otsetee töölauale, määrata kirjelduse, ikooni, kiirklahv ja akna stiil:

' 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

koos Visuaalne FoxPro Samuti võite kasutada WScript.Shell objekti. Idee on identne: leidke Desktop, looge .lnk fail ja määrake omadused, näiteks Akna stiil, ikooni asukoht, sihttee või klahvikombinatsiooni.

* 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

Kõigil juhtudel on põhiolemus sama: Loo otsetee, TargetPath, SalvestaSealt saate vastavalt vajadusele kohandada argumente, ikooni, töökataloogi ja akna stiili.

  Kuidas hõlpsalt VLC-ga videoid võrgu kaudu voogesitada

Argumendid, akna stiil, ikoonid ja otseteed

Kui Access peab rakenduse parameetritega käivitama, täitke lihtsalt .ArgumendidProtsessi jaoks saabas kindlas kaustas kasutage .Töökataloog õige marsruudiga.

Välimuse jaoks määratle .IconLocation osutab .ico-failile või ressursile .exe/.dll-failis (indeksi saab määrata pärast koma). Avamiskäitumist kontrollitakse .Akna stiil3 maksimeeritud, 7 minimeeritud, 4 normaalne.

Kui soovite klahvikombinatsiooni, kasutage Kiirklahv ALT+CTRL+tähe kombinatsiooniga (näiteks ALT+CTRL+N). See määrang kiirendab avamist, aga Liiga palju määramine pole soovitatav et mitte segada süsteemi otseteid.

URL-i (.url) otseteed

Lisaks rakenduste .lnks-failidele saab WSH luua .url-otseteid, mis avavad vaikebrauseri. TargetPath osutab veebiaadressile Ja kui vajate oma ikooni, saate .url-faili hiljem muuta, et lisada IconFile ja 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

See lähenemisviis sobib ideaalselt lingid SharePoint, intraneti või veebirakenduste mida soovite kasutaja töölaual käepärast hoida.

PowerShell IT-le: Intune, SCCM ja suuremahulised juurutused

PowerShell sisaldab juurdepääsu samale COM-mudelile nagu WSH, nii et saate juurdepääsu luua ja seda massiliselt levitada. Tavaline on õige töölaua tuvastamine (kasutaja või avalik), genereerige sihtkaustad ja vajadusel kinnitage teed kiirpääsus.

# 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

Rakendustes koos IntuneSee muster võimaldab teil luua töölauale kausta ja anda Edge'ile juurdepääsu parameetrite, näiteks SharePointi URL-i abil. Kui käivitatakse SYSTEM-ina, on sihttöölaud avalik ja nähtav kõigile profiilidele.

  Vaadake, kuidas takistada teistel teie Chromecasti masinat kontrollimast

En SCCMKui eelistate juurutada eelnevalt loodud .lnk-faili, võib minimaalne käsk olla sama lihtne kui selle kopeerimine avalikule töölauale: Kopeeri üksus \\server\\path\\access.lnk C:\\Users\\Public\\DesktopKui see ei ilmu, kontrollige järgmisi punkte:

  • Täitmise kontekstVeenduge, et programm töötab piisavate õigustega ja oodatud kasutajal/süsteemil.
  • Juurdepääs jagatud ressursileJooksev konto peab suutma lugeda UNC-teed.
  • Tühikutega marsruudid: Pange -Path ja -Destination jutumärkidesse.
  • BitnessSegatud 32/64-bitiste keskkondade puhul kinnitab see, et soovimatuid ümbersuunamisi ei esine.

Kinnita kiirpääsu juurde Shell.Application abil

Lisaks töölauale saate kaustu kinnitada ka Kiire juurdepääs Shell.Application COM-objektiga. See on kasulik, kui loote sidumistee ja soovite, et see oleks Exploreris ligipääsetav.

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

Kui haldate meeskondi ja soovite, et kasutajad leiaksid oma otseteed kiiresti üles, See väike tegu muudab midagi nende päevast päeva.

MSIX ja PSF: Juurdepääsu loomine ilma versioonitud teedele tuginemata

Kui pakendate rakendusi koos MSIX, installitee sisaldab versiooni (näiteks C:\\Program Files\\WindowsApps\\MyApp_1.0.0.0_x86__…). See muutub iga värskendusega, seega on selle teega .lnk-faili määramine halb mõte. Lahendus: AppExecutionAliasManifesti aliase määratledes saate rakenduse käivitada käsuga %localappdata%\\Microsoft\\WindowsApps\\myapp.exe ilma versiooniga sidumata.

Selleks lisage manifesti nimeruumid (uap3 ja desktop) ning looge laiendus windows.appExecutionAlias osutab paketi käivitatavale failile. Ärge unustage nimesid lisada IgnorableNamespaces'i, et manifest need ära tunneks.

Hiljem saate rakenduse sisenemispunkti muuta PSFLauncher32.exe/PSFLauncher64.exe (sõltuvalt arhitektuurist) ja delegeerige juurdepääsu loomine PSF-i abil config.json-failis määratletud käivitusskriptile. Skript käivitub üks kord esimesel initsialiseerimisel.

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

PowerShelli createshortcut.ps1 Valmis .lnk-faili saab paketist kasutaja töölauale kopeerida ja tööruumi tuua ka ikooni. Kohalik vahemälu\\Rändlus mis jääb versioonide vahel stabiilseks.

# 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

Selle lähenemisviisiga tagate, et juurdepääs toimib ka pärast värskendust, ilma igas versioonis .lnk faili puudutamataKui tee osutab aliasele (näiteks %localappdata%\\Microsoft\\WindowsApps\\myapp.exe), on tee ikkagi kehtiv.

Veakäsitlus ja soovitatavad valideerimised

Enne .lnk faili genereerimist on soovitatav kontrollida, kas TargetPath on olemas (välja arvatud juhul, kui kasutate muutujaid nagu %windir% või aliase). VBA/VB6-s saate anda märku, kui käivitatav fail puudub, või toimingu tühistada; PowerShellis kasutage Test-Path'i, et kontrollida, kas tee on ligipääsetav.

  FaceTime'i kasutamine Windowsi arvutis

Kui ikooni tee on .ico võrk, on kasulik taktika kopeerida see kasutaja ajutise või APPDATA kausta ja viidata sellele sealt. Nii väldite katkiseid ikoone kui võrguressurss pole saadaval.

.url-i otseteede muutmisel, kui vajate oma ikooni, avage fail uuesti tekstina ja lisage Ikoonifail ja ikooniindeks lõpus. See annab teile täieliku kontrolli selle välimuse üle ilma brauserile lootmata.

COM-i sulgemisel vabastage objektid, millel on ReleaseComObject PowerShellis või määra VB/VBA-s Nothing. See on väike detail, aga aitab vältida ressursside rippumist intensiivsetes hukkamistes.

Tüüpilised rikkejuhtumid ja kuidas neid lahendada

Kui SCCM-i juurutamine lõpeb koodiga 0, kuid juurdepääsu ei kuvata, kontrollige kõigepealt töölaua sihtkasutajaKui kasutasid SYSTEM-kasutajana ja sisestasid interaktiivsesse profiili %USERPROFILE%\Desktop, siis sa midagi ei näe. Kasuta C:\Users\Public\Desktop kausta, et see kõigile nähtavaks teha.

Kui genereerite Intune'is argumentidega Edge'i viipasid (näiteks kodeeritud tühikutega URL), veenduge, et jutumärgid on okei ja tekst saabub puutumata kujul. Üksik koht paigast ära võib .lnk saatuse murda.

Ettevõtte otseteede kaustade (nt „SharePointi otseteed”) puhul looge kaust esmalt õigele töölauale ja kui soovite selle Exploreris esile tõsta, ankur kiirjuurdepääsule nagu me oleme näinud Shell.Applicationi puhul.

Kui levitate juba loodud .lnk-faili värskendatavas MSIX-paketis, ärge suunake seda WindowsAppsi versioonitud teele. Kasuta AppExecutionAlias'i ja kopeeri ikoon versioonitud kaustast välja.

Kasulikke nippe muutujate ja radadega

Kaasaskantavate skriptide kirjutamiseks toetuge Keskkonnamuutujad: %windir%, %systemroot%, %ProgramFiles% ja sarnased. WSH-s saab neid laiendada käsuga Laienda keskkonda stringidja PowerShellis saate neile viidata $env:VARIABLE kaudu.

Dünaamiliste marsruutide loomisel kontrollige, kas töökaust lõpeb \-ga et vältida ribade dubleerimist või TargetPathi katkemist liitmisel. See on väike kaitsepiire, mis vältida peeneid vigu tootmises.

Kompleksseid parameetreid nõudvate otseteede puhul kaaluge väikese .cmd- või .ps1-skripti kirjutamist ja otsetee sellele osutamist. Nii lihtsustad .lnk faili ja sul on parem kontroll tsitaatide ja argumentide järjekorra üle.

Kui vajate kiirklahve, proovige kombinatsioone reserveerida olulised tähed ja vältige konflikte tavaliste otseteedega. Paljude rakendustega keskkondades dokumenteerige otseteed, et kasutaja saaks ära kasutada ilma katse-eksituseta.

Windowsis on otseteede loomiseks usaldusväärsel ja paindlikul viisil mitmeid võimalusi. WSH on ühine alusja lisaks sellele saate valida kihi: klassikalised skriptid, moodne PowerShell või MSIX-pakend PSF-iga, kui otsite korratavaid protsesse suures mahus. Peamine on valida õige tee, valideerida täitmiskontekst ja vältida habrastesse, versioonitud radadesse kinni jäämist.