Kurkite pasirinktinius sparčiuosius klavišus naudodami „Windows Script Host“

Paskutiniai pakeitimai: 29/09/2025
Autorius: Izaokas
  • WSH leidžia kurti .lnk ir .url sparčiuosius klavišus iš VBScript, VBA, VB6, VFP ir kt. PowerShell " su WScript.Shell objektu.
  • IT diegimuose kontekstas (vartotojas ir SISTEMA) nusprendžia, ar naudoti viešąjį, ar vartotojo darbalaukį.
  • Naudodama MSIX/PSF, „AppExecutionAlias“ vengia versijų turinčių kelių ir palengvina nuolatinę prieigą.
  • Piktogramas, argumentus, karštuosius klavišus ir langų stilius valdo sparčiųjų klavišų savybės.

Spartieji klavišai sistemoje „Windows“ su WSH

Sparčiųjų klavišų kūrimas yra ne tik patogumas: tai būdas automatizuoti užduotis ir pagerinti kasdienį produktyvumą. Windows. Windows Scenarijus Pagrindinis (WSH) Tai siūlo paprastą ir galingą būdą generuoti nuorodas į programas, dokumentus ir interneto adresus iš kelių scenarijų kalbų.

Šiame praktiniame vadove pateikiame patikrintus metodus su VBScript, PowerShell, Visual Basic, Visual FoxPro ir šiuolaikiniai scenarijai su paketais MSIX ir PSFTikslas – suteikti jums galimybę pasirinkti geriausiai jūsų aplinkai (galutinio vartotojo, IT, „Intune“ / SCCM ar supakuoto) tinkantį metodą ir jį užtikrintai įdiegti.

Kas yra „Windows Script Host“ ir kodėl jums tai gali rūpėti?

„Windows Script Host“ yra infrastruktūra, leidžianti vykdyti VBScript ir JScript natūraliai sistemoje „Windows“, be to, kad būtų galima automatizuoti sistemos užduotis, naudojant COM objekto modelį. WScript.Shell objektas Tai pagrindinė dalis kuriant darbalaukio nuorodas, meniu „Pradėti“ nuorodas arba specialius aplankus.

WSH yra „Windows“ dalis nuo tokių versijų kaip „Windows 98“ ir „2000“ir gali būti pridėtas prie senesnių leidimų, pvz., „Windows NT 4.0“, naudojant pasirenkamus komponentus. Šiuolaikinėse sistemose jis yra integruotas ir praktiškai pakanka vykdyti wscript.exe ir cscript.exe failus, kad būtų galima paleisti scenarijus.

Sparčiųjų klavišų scenarijų pavyzdžiai

Reikalavimai ir geriausia praktika prieš pradedant

Prieš pradedant, pravartu peržiūrėti keletą pagrindinių punktų. Patikrinkite, ar WSH yra ir nėra strategijų, blokuojančių scenarijų vykdymą. Įmonių aplinkoje GPO ir antivirusinės programos nustatymai gali paveikti VBScript arba PowerShell.

Venkite darbalaukio perkrauti sparčiaisiais klavišais. Kurkite prieigą tik tada, kai ji prideda vertės ir jei juos platinate centralizuotai, apibrėžkite aiškų kriterijų (pvz., darbo aplankai arba Apps kritinė korporacija).

Jei scenarijus vykdomas kaip SISTEMOS arba mašinos kontekste („Intune“ / SCCM) atidžiai pagalvokite, kur rašote .lnk failą: galbūt norėsite naudoti viešąjį darbalaukį (C:\\Users\\Public\\Desktop), o ne dabartinio vartotojo darbalaukį.

Patikrink paskirties kelias, teisės ir aplinkos kintamiejiTipiška klaida – nurodyti kelius su besikeičiančiomis versijomis (Program Files\\WindowsApps) arba naudoti UNC neturint prieigos iš paskyros, kurioje vykdomas scenarijus.

Specialūs aplankai ir kaip nustatyti jų kelius

WSH rūšiuoja specialius aplankų pavadinimus į jų tikrąjį kelią naudodamas WshShell.SpecialFoldersTarp naudingiausių yra „Desktop“, „StartMenu“, „Programs“, „Startup“ arba „Favorites“, taip pat jų variantai visiems vartotojams („AllUsersDesktop“, „AllUsersStartMenu“ ir kt.). Tai leidžia jums būti nepriklausomiems kalbos ir tikslios profilio struktūros.

Jei dirbate su klasikiniu „Visual Basic“ arba norite gauti maršrutus iš API, galite naudoti SHGetSpecialFolderLocation/SHGetPathFromIDList , kad būtų pateikti keliai, pvz., Darbalaukis, Naujausios programos arba Dokumentai. Tai naudinga, kai integruojate į programas kurie tiesiogiai nepriklauso nuo WScript objekto.

Pagrindinis šablonas: sparčiųjų klavišų kūrimas naudojant WScript.Shell

Srautas paprastas: sukurkite COM egzempliorių, sugeneruokite nuorodą, užpildykite ypatybes ir išsaugokite. Šis modelis kartojamas VBScript, VBA, VB6, VFP ir PowerShell kalbose su nedideliais sintaksės skirtumais.

' 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 Šablonas yra lygiavertis, keičiasi tik sintaksė ir kodo talpinimo vieta. Galite sukurti nuorodą darbalaukyje, priskirti aprašymą, piktogramą, karštasis klavišas ir langų stilius:

' 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

su VisualFoxPro Taip pat galite naudoti „WScript.Shell“ objektą. Idėja tokia pati: suraskite „Desktop“, sukurkite .lnk failą ir nustatykite tokias ypatybes kaip Lango stilius, piktogramos vieta, paskirties kelias arba klavišų kombinaciją.

* 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

Visais atvejais esmė yra ta pati: Sukurti „Shortcut“, „TargetPath“, „Išsaugoti“Iš ten galite pritaikyti argumentus, piktogramą, darbo katalogą ir lango stilių pagal poreikį.

  Kaip lengvai transliuoti vaizdo įrašus tinkle naudojant VLC

Argumentai, lango stilius, piktogramos ir spartieji klavišai

Kai prieiga turi paleisti programą su parametrais, tiesiog užpildykite .ArgumentaiDėl proceso bagažinė konkrečiame aplanke naudokite .DarboKatalogą su tinkamu maršrutu.

Dėl išvaizdos apibrėžkite .IconLocation nukreipia į .ico arba išteklių .exe/.dll faile (galite nurodyti indeksą po kablelio). Atidarymo elgsena kontroliuojama naudojant .LangoStilius3 padidintos, 7 sumažintos, 4 normalios.

Jei norite klavišų derinio, naudokite .Spartusis klavišas su ALT+CTRL+raidė šablonu (pavyzdžiui, ALT+CTRL+N). Šis priskyrimas pagreitina atidarymą, bet Nepatartina skirti per daug kad netrukdytų sistemos spartiesiems klavišams.

URL (.url) spartieji klavišai

Be programų .lnks, WSH gali kurti .url sparčiuosius klavišus, kurie atidaro numatytąją naršyklę. „TargetPath“ nurodo į žiniatinklio adresą ir jei jums reikia savo piktogramos, vėliau galite redaguoti .url failą ir pridėti „IconFile“ bei „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

Šis metodas idealiai tinka nuorodos į "SharePoint", intraneto arba žiniatinklio programos kurį norite palikti po ranka vartotojo darbalaukyje.

„PowerShell“ IT skyriui: „Intune“, SCCM ir didelio masto diegimai

„PowerShell“ apima prieigą prie to paties COM modelio kaip ir WSH, todėl galite sukurti prieigą ir ją masiškai platinti. Įprasta užduotis yra aptikti tinkamą darbalaukį (vartotojo arba viešas), sugeneruokite paskirties aplankus ir, jei reikia, prisekite kelius greitojoje prieigoje.

# 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

Įgyvendinant su IntuneŠis šablonas leidžia sukurti aplanką darbalaukyje ir perduoti prieigą prie „Edge“ naudojant parametrus, pvz., „SharePoint“ URL. Jei paleista kaip SYSTEM, tikslinis darbalaukis bus viešas, matomas visiems profiliams.

  Sužinokite, kaip neleisti kitiems valdyti jūsų „Chromecast“ įrenginio

En SCCMJei norite diegti iš anksto sukurtą .lnk failą, minimali komanda gali būti tokia paprasta, kaip nukopijuoti jį į viešąjį darbalaukį: Kopijuoti elementą \\server\\path\\access.lnk C:\\Users\\Public\\DesktopJei jis nepasirodo, patikrinkite šiuos punktus:

  • Vykdymo kontekstasĮsitikinkite, kad programa veikia su pakankamomis teisėmis ir su numatytu vartotoju / sistema.
  • Prieiga prie bendrinamo ištekliausVykdomoji paskyra turi galėti nuskaityti UNC kelią.
  • Maršrutai su tarpais: Įrašykite -Path ir -Destination kabutėse.
  • BitnessMišriose 32/64 bitų aplinkose patvirtina, kad nėra nepageidaujamų peradresavimų.

Prisegti prie greitosios prieigos naudojant „Shell.Application“

Be darbalaukio, aplankus galite prisegti prie Greita prieiga su „Shell.Application COM“ objektu. Tai naudinga, kai kuriate susiejimo kelią ir norite, kad jis būtų pasiekiamas naršyklėje.

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

Jei valdote komandas ir norite, kad naudotojai greitai rastų savo sparčiuosius klavišus, Šis mažas veiksmas daro skirtumą jų kasdien.

MSIX ir PSF: prieigos kūrimas nesiremiant versijų keliais

Kai pakuojate programas su MSIX, diegimo kelyje nurodoma versija (pavyzdžiui, C:\\Program Files\\WindowsApps\\MyApp_1.0.0.0_x86__…). Jis keičiasi su kiekvienu atnaujinimu, todėl nerekomenduojama nustatyti .lnk failo su tuo keliu. Sprendimas: „AppExecutionAlias“Apibrėždami pseudonimą manifeste, galite paleisti programėlę su %localappdata%\\Microsoft\\WindowsApps\\myapp.exe neprisirišdami prie versijos.

Norėdami tai padaryti, pridėkite vardų erdves manifeste („uap3“ ir „desktop“) ir sukurkite plėtinį windows.appExecutionAlias nukreipia į paketo vykdomąjį failą. Nepamirškite įtraukti pavadinimų į „IgnorableNamespaces“, kad manifestas juos atpažintų.

Vėliau galite pakeisti programos įėjimo tašką į PSFLauncher32.exe/PSFLauncher64.exe (priklausomai nuo architektūros) ir deleguokite prieigos kūrimą paleidimo scenarijui, apibrėžtam config.json faile naudojant PSF. Scenarijus paleidžiamas vieną kartą pirmosios inicijavimo metu.

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

PowerShell creatshortcut.ps1 Galite nukopijuoti paruoštą .lnk failą iš paketo į vartotojo darbalaukį ir į darbo sritį įkelti piktogramą. Vietinė talpykla\\Tarptinklinis ryšys kuris išlieka stabilus tarp versijų.

# 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

Taikydami šį metodą, užtikrinate, kad prieiga veiks ir po atnaujinimo, neliesdami .lnk kiekvienoje versijojeJei kelias nurodo į pseudonimą (pvz., %localappdata%\\Microsoft\\WindowsApps\\myapp.exe), kelias vis tiek bus galiojantis.

Klaidų tvarkymas ir rekomenduojami patvirtinimai

Prieš generuojant .lnk failą, patartina patikrinti, ar TargetPath egzistuoja (nebent naudojate tokius kintamuosius kaip %windir% arba slapyvardžius). VBA/VB6 galite įspėti, jei vykdomojo failo nėra, arba atšaukti operaciją; „PowerShell“ naudokite „Test-Path“, kad patikrintumėte, ar kelias pasiekiamas.

  Kaip naudoti „FaceTime“ „Windows“ kompiuteryje

Jei piktogramos kelias yra .ico tinklas, naudinga taktika yra nukopijuoti jį į vartotojo laikiną arba APPDATA aplanką ir pateikti nuorodą iš ten. Štai kaip išvengti neveikiančių piktogramų jei tinklo išteklių nėra.

Redaguojant .url sparčiuosius klavišus, jei reikia savo piktogramos, iš naujo atidarykite failą kaip tekstą ir pridėkite IconFile ir IconIndex pabaigoje. Tai suteikia jums visišką jo išvaizdos valdymą, nenaudojant naršyklės.

Kai nutraukiate COM, atlaisvinkite objektus su ReleaseComObject „PowerShell“ programoje arba VB/VBA nepriskirkite „Nothing“. Tai nedidelė detalė, bet padeda išvengti išteklių kaupimosi intensyvių egzekucijų metu.

Tipiniai gedimų atvejai ir kaip juos išspręsti

Jei SCCM diegimas baigiasi kodu 0, bet prieiga neatsiranda, pirmiausia patikrinkite tikslinis darbalaukio vartotojasJei leidote kaip SYSTEM ir interaktyviame profilyje įvedėte %USERPROFILE%\Desktop, nieko nematysite. Naudokite C:\Users\Public\Desktop, kad jis būtų matomas visiems.

„Intune“, kai generuojate „Edge“ raginimus su argumentais (pvz., URL su užkoduotais tarpais), patvirtinkite, kad kabutės yra gerai „-ShortcutArguments“ ir tekstas atkeliauja nepažeistas. Viena ne savo vietoje esanti erdvė gali nulemti .lnk likimą.

Įmonės nuorodų aplankams (pvz., „SharePoint“ spartieji klavišai) pirmiausia sukurkite aplanką tinkamame darbalaukyje ir, jei norite jį paryškinti naršyklėje, prieraištis prie greitosios prieigos kaip matėme su „Shell.Application“.

Jei platinate jau sukurtą .lnk failą atnaujinamame MSIX pakete, nenukreipkite jo į versijų kelią „WindowsApps“ viduje. Naudoti „AppExecution“ slapyvardį ir nukopijuokite piktogramą iš versijų aplanko.

Naudingi triukai su kintamaisiais ir keliais

Norėdami rašyti nešiojamus scenarijus, pasikliaukite aplinkos įvairovė: %windir%, %systemroot%, %ProgramFiles% ir panašiai. WSH galite juos išplėsti naudodami Išplėsti aplinkos eilutes, o „PowerShell“ sistemoje galite į juos kreiptis naudodami $env:VARIABLE.

Kuriant dinaminius maršrutus, patikrinkite, ar darbinis aplankas baigiasi \ kad sujungiant nebūtų dubliuojami stulpeliai arba nutraukiamas „TargetPath“ kelias. Tai mažas apsauginis turėklas, kuris venkite subtilių klaidų gamyboje.

Jei spartieji klavišai reikalauja sudėtingų parametrų, apsvarstykite galimybę parašyti nedidelį .cmd arba .ps1 scenarijų ir nurodyti spartųjį klavišą į jį. Štai kaip supaprastinate .lnk failą ir jūs galite geriau kontroliuoti citavimą ir argumentų tvarką.

Jei jums reikia karštųjų klavišų, pabandykite rezervuoti derinius su reikšmingos raidės ir išvengti konfliktų su įprastais sparčiaisiais klavišais. Aplinkose, kuriose yra daug programų, dokumentuokite sparčiuosius klavišus, kad vartotojas galėtų pasinaudokite be bandymų ir klaidų.

Turite daugybę parinkčių, kaip patikimai ir lanksčiai kurti sparčiuosius klavišus sistemoje „Windows“. WSH yra bendra bazė, be to, galite pasirinkti sluoksnį: klasikinius scenarijus, modernų „PowerShell“ arba MSIX pakavimą su PSF, kai ieškote pasikartojančių procesų dideliu mastu. Svarbiausia pasirinkti tinkamą kelią, patvirtinti vykdymo kontekstą ir išvengti įstrigimo trapiuose, versijuotuose keliuose.