Izveidojiet pielāgotus saīsnes, izmantojot Windows Script Host

Pēdējā atjaunošana: 29/09/2025
Autors: Isaac
  • WSH ļauj izveidot .lnk un .url saīsnes no VBScript, VBA, VB6, VFP un PowerShell ar WScript.Shell objektu.
  • IT izvietojumos konteksts (lietotājs pret SISTĒMU) nosaka, vai izmantot publisko vai lietotāja darbvirsmu.
  • Izmantojot MSIX/PSF, AppExecutionAlias ​​​​izvairās no versiju ceļiem un atvieglo pastāvīgu piekļuvi.
  • Ikonas, argumentus, īsinājumtaustiņus un logu stilus kontrolē saīsņu īpašības.

Īsceļi operētājsistēmā Windows ar WSH

Saīsņu izveide nav tikai ērtība: tas ir veids, kā automatizēt uzdevumus un uzlabot ikdienas produktivitāti. Windows. Windows Scenārijs Saimniekdators (WSH) Tas piedāvā vienkāršu un jaudīgu veidu, kā ģenerēt saites uz lietojumprogrammām, dokumentiem un tīmekļa adresēm no vairākām skriptvalodām.

Šajā praktiskajā rokasgrāmatā mēs apkopojam pārbaudītas metodes ar VBScript, PowerShell, Visual Basic, Visual FoxPro un mūsdienīgi scenāriji ar pakotnēm MSIX un PSFMērķis ir dot jums iespēju izvēlēties pieeju, kas vislabāk atbilst jūsu videi (galalietotājs, IT, Intune/SCCM vai pakotne), un ieviest to ar pārliecību.

Kas ir Windows Script Host un kāpēc tas jums varētu interesēt?

Windows Script Host ir infrastruktūra, kas ļauj jums palaist VBScript un JScript sākotnēji operētājsistēmā Windows, kā arī COM objekta modeļa pieejamība sistēmas uzdevumu automatizēšanai. WScript.Shell objekts Tā ir galvenā sastāvdaļa, lai izveidotu darbvirsmas saīsnes, izvēlnes Sākt saīsnes vai īpašas mapes.

WSH ir bijusi daļa no Windows kopš tādām versijām kā Windows 98 un 2000, un to var pievienot vecākiem izdevumiem, piemēram, Windows NT 4.0, izmantojot papildu komponentus. Mūsdienu sistēmās tas ir integrēts un praksē skriptu palaišanai pietiek ar izpildāmajiem failiem wscript.exe un cscript.exe.

Īsceļu skriptu piemēri

Prasības un labākā prakse pirms darba sākšanas

Pirms sākat, ir ieteicams pārskatīt dažus pamatpunktus. Pārliecinieties, vai WSH ir pieejams. un nav politiku, kas bloķētu skriptu izpildi. Korporatīvā vidē GPO un pretvīrusu iestatījumi var ietekmēt VBScript vai PowerShell.

Izvairieties no darbvirsmas pārblīvēšanas ar īsinājumtaustiņiem. Izveidojiet piekļuves tikai tad, ja tās sniedz pievienoto vērtību un, ja jūs tos izplatāt centralizēti, definējiet skaidru kritēriju (piemēram, darba mapes vai progr kritiski korporatīvs).

Ja skripts tiek palaists kā SISTĒMA vai mašīnas kontekstā (Intune/SCCM) rūpīgi pārdomājiet, kur rakstāt .lnk failu: pašreizējā lietotāja darbvirsmas vietā varat izmantot publisko darbvirsmu (C:\\Users\\Public\\Desktop).

Pārbaudiet mērķa ceļš, atļaujas un vides mainīgieTipiska kļūda ir norādīt uz ceļiem ar mainīgām versijām (Program Files\\WindowsApps) vai izmantot UNC bez piekļuves no konta, kurā darbojas skripts.

Īpašās mapes un to ceļu noteikšana

WSH atrisina īpašu mapju nosaukumus atbilstoši to faktiskajam ceļam, izmantojot WshShell.SpecialFoldersStarp visnoderīgākajiem ir Darbvirsma, Sākuma izvēlne, Programmas, Startup vai Izlase, kā arī to varianti visiem lietotājiem (VisiLietotājiDesktop, VisiLietotājiStartMenu utt.). Tas ļauj jums būt neatkarīgam valodas un precīzas profila struktūras.

Ja strādājat ar klasisko Visual Basic vai vēlaties iegūt maršrutus no API, varat izmantot SHGetSpecialFolderLocation/SHGetPathFromIDList lai uzskaitītu ceļus, piemēram, Darbvirsma, Nesenās programmas vai Dokumenti. Tas ir noderīgi, integrējoties lietojumprogrammās kas nav tieši atkarīgi no WScript objekta.

Pamata modelis: saīsņu izveide, izmantojot WScript.Shell

Plūsma ir vienkārša: izveidojiet COM instanci, ģenerējiet saīsni, aizpildiet rekvizītus un saglabājiet. Šis modelis tiek atkārtots VBScript, VBA, VB6, VFP un PowerShell valodās. ar nelielām sintaktiskām variācijām.

' 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 Modelis ir līdzvērtīgs, mainās tikai sintakse un koda izvietošanas vieta. Varat izveidot saīsni uz darbvirsmas, piešķirt aprakstu, ikonu, karstais taustiņš un logu stils:

' 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

ar Vizuālā FoxPro Varat arī izmantot WScript.Shell objektu. Ideja ir identiska: atrodiet Desktop, izveidojiet .lnk failu un iestatiet rekvizītus, piemēram, Loga stils, ikonas atrašanās vieta, mērķa ceļš vai taustiņu kombināciju.

* 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

Visos gadījumos pamatprincips ir viens un tas pats: IzveidotSaīsni, Mērķa ceļš, SaglabātPēc tam pielāgojiet argumentus, ikonu, darba direktoriju un loga stilu atbilstoši vajadzībām.

  Kā viegli straumēt videoklipus tīklā, izmantojot VLC

Argumenti, loga stils, ikonas un īsinājumtaustiņi

Ja piekļuvei ir jāpalaiž lietotne ar parametriem, vienkārši aizpildiet .Argumenti. Procesam zābaks noteiktā mapē, izmantojiet .DarbaDirectory ar pareizo maršrutu.

Lai izskatītos, definējiet .IconLocation norāda uz .ico vai resursu .exe/.dll failā (indeksu var norādīt aiz komata). Atvēršanas darbību kontrolē ar .WindowStyle3 maksimizēti, 7 minimizēti, 4 normāli.

Ja vēlaties taustiņu kombināciju, izmantojiet .Karstais taustiņš ar taustiņu kombināciju ALT+CTRL+Burts (piemēram, ALT+CTRL+N). Šī piešķire paātrina atvēršanu, bet Nav ieteicams piešķirt pārāk daudz lai netraucētu sistēmas īsceļiem.

URL (.url) saīsnes

Papildus lietojumprogrammu .lnks failiem, WSH var izveidot .url saīsnes, kas atver noklusējuma pārlūkprogrammu. TargetPath norāda uz tīmekļa adresi un, ja jums ir nepieciešama sava ikona, vēlāk varat rediģēt .url failu, lai pievienotu IconFile un 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

Šī pieeja ir ideāli piemērota saites uz SharePoint, intraneta vai tīmekļa lietojumprogrammas ko vēlaties atstāt pa rokai lietotāja darbvirsmā.

PowerShell IT speciālistiem: Intune, SCCM un liela mēroga izvietošana

PowerShell ietver piekļuvi tam pašam COM modelim kā WSH, tāpēc varat izveidot piekļuvi un izplatīt to masveidā. Parasti tiek noteikts pareizais darbvirsmas tips. (lietotāja vai publiska), ģenerējiet mērķa mapes un, ja nepieciešams, piespraudiet ceļus ātrās piekļuves sadaļā.

# 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

Ieviešanā ar IntuneŠis modelis ļauj izveidot mapi savā darbvirsmā un nodot piekļuvi Edge, izmantojot parametrus, piemēram, SharePoint URL. Ja palaist kā SYSTEM, mērķa darbvirsma būs publiska un redzama visiem profiliem.

  Uzziniet, kā atturēt citus no jūsu Chromecast ierīces kontroles

En SCCMJa vēlaties izvietot iepriekš izveidotu .lnk failu, minimālā komanda var būt tikpat vienkārša kā tā kopēšana uz publisko darbvirsmu: Kopēt vienumu \\server\\path\\access.lnk C:\\Users\\Public\\DesktopJa tas neparādās, pārbaudiet šos punktus:

  • Izpildes kontekstsPārliecinieties, vai programma darbojas ar pietiekamām atļaujām un paredzētajā lietotāja/sistēmas režīmā.
  • Piekļuve koplietotajam resursamDarbības kontam ir jāspēj nolasīt UNC ceļu.
  • Maršruti ar atstarpēm: Ievietojiet -Path un -Destination pēdiņās.
  • BitnessJauktās 32/64 bitu vidēs apstiprina, ka nav nevēlamu pāradresāciju.

Piespraust ātrajai piekļuvei, izmantojot Shell.Application

Papildus darbvirsmai varat piespraust mapes Ātra piekļuve ar Shell.Application COM objektu. Tas ir noderīgi, ja izveidojat saistīšanas ceļu un vēlaties, lai tas būtu pieejams programmā Explorer.

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

Ja pārvaldāt komandas un vēlaties, lai lietotāji ātri atrastu savas īsinājumtaustiņus, Šī mazā darbība maina situāciju viņu ikdienā.

MSIX un PSF: piekļuves izveide, nepaļaujoties uz versiju ceļiem

Kad jūs pakotnējat lietojumprogrammas ar MSIX, instalācijas ceļā ir iekļauta versija (piemēram, C:\\Program Files\\WindowsApps\\MyApp_1.0.0.0_x86__…). Tas mainās ar katru atjauninājumu, tāpēc nav ieteicams iestatīt .lnk failu ar šo ceļu. Risinājums: AppExecutionAliasDefinējot aizstājvārdu manifestā, varat palaist lietotni ar %localappdata%\\Microsoft\\WindowsApps\\myapp.exe, nepiesaistot to versijai.

Lai to izdarītu, pievienojiet manifestā nosaukumtelpas (uap3 un desktop) un izveidojiet paplašinājumu. windows.appExecutionAlias norāda uz pakotnes izpildāmo failu. Atcerieties iekļaut nosaukumus IgnorableNamespaces, lai manifests tos atpazītu.

Pēc tam varat mainīt lietojumprogrammas ievades punktu uz PSFLauncher32.exe/PSFLauncher64.exe (atkarībā no arhitektūras) un deleģējiet piekļuves izveidi startēšanas skriptam, kas definēts config.json failā, izmantojot PSF. Skripts tiek palaists vienreiz pirmās inicializācijas laikā.

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

PowerShell createshortcut.ps1 Jūs varat nokopēt gatavu .lnk failu no pakotnes uz lietotāja darbvirsmu un arī ienest ikonu darbvietā. Vietējā kešatmiņa\\Klientu viesabonēšana kas starp versijām saglabājas stabils.

# 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

Izmantojot šo pieeju, jūs nodrošināt, ka piekļuve darbojas pēc atjaunināšanas, nepieskaroties .lnk katrā versijāJa ceļš norāda uz aizstājvārdu (piemēram, %localappdata%\\Microsoft\\WindowsApps\\myapp.exe), ceļš joprojām būs derīgs.

Kļūdu apstrāde un ieteicamās validācijas

Pirms .lnk ģenerēšanas ieteicams pārbaudīt, vai TargetPath pastāv (ja vien neizmantojat tādus mainīgos kā %windir% vai aizstājvārdus). VBA/VB6 valodā varat brīdināt, ja trūkst izpildāmā faila, vai atcelt darbību; PowerShell valodā izmantojiet Test-Path, lai pārbaudītu, vai ceļš ir pieejams.

  Kā lietot FaceTime savā Windows datorā

Ja ikonas ceļš ir .ico tīkls, noderīga taktika ir kopēt to lietotāja pagaidu vai APPDATA mapē un atsaukties uz to no turienes. Lūk, kā izvairīties no bojātām ikonām ja tīkla resurss nav pieejams.

Rediģējot .url saīsnes, ja jums ir nepieciešama sava ikona, atveriet failu atkārtoti kā tekstu un pievienojiet IconFile un IconIndex beigās. Tas dod jums pilnīgu kontroli pār tā izskatu, nepaļaujoties uz pārlūkprogrammu.

Kad jūs pārtraucat COM, atbrīvojiet objektus ar ReleaseComObject PowerShell vai VB/VBA nepiešķiriet Nekas. Tā ir mazsvarīga detaļa, bet palīdz izvairīties no resursu kavēšanās intensīvās nāvessodu izpildēs.

Tipiski bojājumu gadījumi un to risināšanas veidi

Ja SCCM izvietošana beidzas ar kodu 0, bet piekļuve neparādās, vispirms pārbaudiet darbvirsmas mērķa lietotājsJa darbojāties kā SYSTEM un interaktīvajā profilā ierakstījāt %USERPROFILE%\Desktop, jūs neko neredzēsiet. Izmantojiet C:\Users\Public\Desktop, lai tas būtu redzams visiem.

Pakalpojumā Intune, ģenerējot Edge uzvednes ar argumentiem (piemēram, URL ar kodētām atstarpēm), apstipriniet, ka pēdiņas ir labas un teksts tiek piegādāts neskarts. Viena vieta nevietā var izšķirt .lnk likteni.

Korporatīvo saīšņu mapju (piemēram, "SharePoint saīsnes") gadījumā vispirms izveidojiet mapi pareizajā darbvirsmā un, ja vēlaties to iezīmēt programmā Explorer, ātrās piekļuves enkurs kā mēs redzējām ar Shell.Application.

Ja izplatāt jau izveidoto .lnk failu MSIX pakotnē, kas tiek atjaunināta, nenorādiet to uz versiju ceļu WindowsApps ietvaros. Izmantojiet AppExecutionAliase un nokopējiet ikonu no versiju mapes.

Noderīgi triki ar mainīgajiem un ceļiem

Lai rakstītu pārnēsājamus skriptus, paļaujieties uz Vides mainīgie: %windir%, %systemroot%, %ProgramFiles% un līdzīgi. WSH vidē tos var paplašināt ar Izvērst vides virkni, un pakalpojumā PowerShell uz tiem var atsaukties, izmantojot $env:VARIABLE.

Veidojot dinamiskos maršrutus, pārbaudiet, vai darba mape beidzas ar \ lai izvairītos no joslu dublēšanās vai TargetPath pārtraukšanas, savienojot. Tā ir neliela aizsargbarjera, kas izvairīties no smalkām kļūdām ražošanā.

Īsinājumtaustiņiem, kuriem nepieciešami sarežģīti parametri, apsveriet iespēju uzrakstīt nelielu .cmd vai .ps1 skriptu un norādīt uz to saīsnē. Lūk, kā vienkāršot .lnk failu un jums ir labāka kontrole pār citēšanu un argumentu secību.

Ja nepieciešami īsinājumtaustiņi, mēģiniet rezervēt kombinācijas ar nozīmīgas burti un izvairieties no sadursmēm ar bieži lietotiem īsinājumtaustiņiem. Vidēs ar daudzām lietotnēm dokumentējiet īsinājumtaustiņus, lai lietotājs varētu izmantojiet priekšrocības bez izmēģinājumiem un kļūdām.

Jums ir pieejamas dažādas iespējas, kā uzticamā un elastīgā veidā izveidot saīsnes sistēmā Windows. WSH ir kopējā bāze, un papildus tam varat izvēlēties slāni: klasiskos skriptus, moderno PowerShell vai MSIX pakotni ar PSF, ja meklējat atkārtojamus procesus lielā mērogā. Galvenais ir izvēlēties pareizo ceļu, validēt izpildes kontekstu un izvairīties no iesprūšanas trauslos, versiju noteiktos ceļos.