Creați comenzi rapide personalizate cu Windows Script Host

Ultima actualizare: 29/09/2025
Autorul: Isaac
  • WSH vă permite să creați comenzi rapide .lnk și .url din VBScript, VBA, VB6, VFP și PowerShell cu obiectul WScript.Shell.
  • În implementările IT, contextul (utilizator vs. SISTEM) decide dacă se utilizează desktopul public sau cel al utilizatorului.
  • Cu MSIX/PSF, AppExecutionAlias ​​evită căile versionate și facilitează accesul persistent.
  • Pictogramele, argumentele, tastele rapide și stilurile ferestrelor sunt controlate de proprietățile comenzilor rapide.

Comenzi rapide în Windows cu WSH

Crearea de scurtături nu este doar o comoditate: este o modalitate de a automatiza sarcinile și de a îmbunătăți productivitatea zilnică. ferestre din. ferestre din Scenariu Gazdă (WSH) Oferă o modalitate simplă și puternică de a genera linkuri către aplicații, documente și adrese web din mai multe limbaje de scripting.

În acest ghid practic, reunim tehnici dovedite cu VBScript, PowerShell, Visual Basic, Visual FoxPro și scenarii moderne cu pachete MSIX și PSFScopul este de a vă permite să alegeți abordarea care se potrivește cel mai bine mediului dumneavoastră (utilizator final, IT, Intune/SCCM sau pachet) și să o implementați cu încredere.

Ce este Windows Script Host și de ce ți-ar putea interesa

Windows Script Host este infrastructura care vă permite să rulați VBScript și JScript nativ pe Windows, pe lângă expunerea unui model de obiecte COM pentru automatizarea sarcinilor de sistem. Obiectul WScript.Shell Este elementul cheie pentru a crea comenzi rapide pe desktop, comenzi rapide în meniul Start sau foldere speciale.

WSH face parte din Windows încă de la versiuni precum Windows 98 și 2000și poate fi adăugat la ediții mai vechi, cum ar fi Windows NT 4.0, folosind componente opționale. În sistemele moderne, acesta este integrat și în practică, este suficient să aveți executabilele wscript.exe și cscript.exe pentru a lansa scripturi.

Exemple de scripturi pentru scurtături

Cerințe și cele mai bune practici înainte de începere

Înainte de a începe, este o idee bună să revedeți câteva aspecte de bază. Verificați dacă WSH este disponibil și nu există politici care să blocheze execuția scripturilor. În mediile corporative, obiectele GPO și setările antivirus pot afecta VBScript sau PowerShell.

Evitați să aglomerați desktopul cu scurtături. Creați accese doar atunci când acestea adaugă valoare și dacă le distribuiți centralizat, definiți un criteriu clar (de exemplu, foldere de lucru sau Apps corporativ critic).

Dacă scriptul este rulat ca SYSTEM sau în contextul mașinii (Intune/SCCM), gândește-te cu atenție unde scrii fișierul .lnk: s-ar putea să vrei să folosești desktopul public (C:\\Users\\Public\\Desktop) în loc de desktopul utilizatorului curent.

Verifică calea de destinație, permisiunile și variabilele de mediuO greșeală tipică este indicarea căilor cu versiuni în schimbare (Program Files\\WindowsApps) sau utilizarea UNC fără acces din partea contului care rulează scriptul.

Foldere speciale și cum se rezolvă căile acestora

WSH rezolvă numele de foldere speciale la calea lor reală folosind WshShell.SpecialFoldersPrintre cele mai utile se numără Desktop, StartMenu, Programs, Startup sau Favorite, precum și variantele acestora pentru toți utilizatorii (AllUsersDesktop, AllUsersStartMenu etc.). Acest lucru îți permite să fii independent a limbii și structura exactă a profilului.

Dacă lucrați cu Visual Basic clasic sau doriți să obțineți rute din API, puteți utiliza SGHetSpecialFolderLocation/SHGetPathFromIDList pentru a lista căi precum Desktop, Programe recente sau Documente. Este util atunci când integrezi în aplicații care nu depind direct de obiectul WScript.

Model de bază: Crearea scurtăturilor cu WScript.Shell

Fluxul este simplu: creați instanța COM, generați comanda rapidă, completați proprietățile și salvați. Acest model se repetă în VBScript, VBA, VB6, VFP și PowerShell cu mici variații sintactice.

' 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 Modelul este echivalent, doar sintaxa și locul în care găzduiți codul se modifică. Puteți crea comanda rapidă pe desktop, îi puteți atribui o descriere, o pictogramă, tastă rapidă și stilul ferestrei:

' 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

cu VisualFoxPro De asemenea, puteți utiliza obiectul WScript.Shell. Ideea este identică: localizați Desktop, creați fișierul .lnk și setați proprietăți precum StilFereastră, LocațieIconiță, CaleȚintă sau combinația de taste.

* 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

În toate cazurile, nucleul este același: CreareComandă, Cale Țintă, SalvareDe acolo, personalizați argumentele, pictograma, directorul de lucru și stilul ferestrei după cum este necesar.

  Cum să transmiteți cu ușurință videoclipuri prin rețea cu VLC

Argumente, stilul ferestrei, pictograme și scurtături

Când accesul trebuie să lanseze o aplicație cu parametri, pur și simplu completați ArgumentePentru proces cizmă într-un anumit folder, utilizați .DirectorDeLucru cu traseul corect.

Pentru aspect, definește .LocațiaPictogramei indicând către un fișier .ico sau o resursă dintr-un fișier .exe/.dll (puteți specifica indexul după virgulă). Comportamentul la deschidere este controlat cu .StilFereastră: 3 maximizate, 7 minimizate, 4 normale.

Dacă doriți o combinație de taste, utilizați Tastă rapidă cu modelul ALT+CTRL+Literă (de exemplu, ALT+CTRL+N). Această atribuire accelerează deschiderea, dar Nu este recomandabil să atribuiți prea multe pentru a nu interfera cu comenzile rapide ale sistemului.

Comenzi rapide pentru URL-uri (.url)

Pe lângă fișierele .lnk ale aplicațiilor, WSH poate crea comenzi rapide .url care deschid browserul implicit. TargetPath indică adresa web Și dacă aveți nevoie de propria pictogramă, puteți edita fișierul .url ulterior pentru a adăuga 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

Această abordare este ideală pentru linkuri către SharePoint, intranet sau aplicații web pe care doriți să le lăsați la îndemână pe desktopul utilizatorului.

PowerShell pentru IT: Intune, SCCM și implementări la scară largă

PowerShell încorporează acces la același model COM ca și WSH, astfel încât să puteți crea acces și să îl distribuiți în masă. De obicei, se detectează desktopul corect. (utilizator sau public), generați foldere de destinație și, dacă este necesar, fixați căi în Acces rapid.

# 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

În implementări cu În tonAcest model vă permite să creați un folder pe desktop și să acordați acces către Edge cu parametri precum o adresă URL SharePoint. Dacă este executat ca SYSTEM, desktopul țintă va fi cel public, vizibil pentru toate profilurile.

  Aflați cum să împiedicați pe alții să vă controleze aparatul Chromecast

En SCCMDacă preferați să implementați un fișier .lnk predefinit, comanda minimă poate fi la fel de simplă ca copierea acestuia pe desktopul public: Copiere-element \\server\\cale\\access.lnk C:\\Utilizatori\\Public\\DesktopDacă nu apare, verificați aceste aspecte:

  • Contextul execuțieiAsigurați-vă că programul rulează cu permisiuni suficiente și pe utilizatorul/sistemul așteptat.
  • Accesul la resursa partajatăContul curent trebuie să poată citi calea UNC.
  • Rute cu spațiiÎncadrează -Path și -Destination între ghilimele.
  • BitnessÎn medii mixte pe 32/64 de biți, confirmă că nu există redirecționări nedorite.

Fixează la Acces rapid cu Shell.Application

Pe lângă desktop, puteți fixa foldere pe Acces rapid cu obiectul Shell.Application COM. Acest lucru este util atunci când creați o cale de legare și doriți ca aceasta să fie accesibilă în 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")
}

Dacă gestionați echipe și doriți ca utilizatorii să își găsească rapid comenzile rapide, Această mică acțiune face diferența în ziua lor de zi cu zi.

MSIX și PSF: Creați acces fără a vă baza pe căi versionate

Când împachetați aplicații cu MSIX, calea de instalare include versiunea (de exemplu, C:\\Program Files\\WindowsApps\\MyApp_1.0.0.0_x86__…). Aceasta se schimbă la fiecare actualizare, așa că nu este o idee bună să setați un fișier .lnk cu acea cale. Soluție: AppExecutionAliasPrin definirea unui alias în manifest, puteți lansa aplicația cu %localappdata%\\Microsoft\\WindowsApps\\myapp.exe fără a fi legat de versiune.

Pentru a face acest lucru, adăugați spațiile de nume în manifest (uap3 și desktop) și creați extensia windows.appExecutionAlias indicând către executabilul pachetului. Nu uitați să includeți numele în IgnorableNamespaces astfel încât manifestul să le recunoască.

Ulterior, puteți schimba punctul de intrare al aplicației la PSFLauncher32.exe/PSFLauncher64.exe (în funcție de arhitectură) și deleagă crearea accesului la un script de pornire definit în config.json folosind PSF. Scriptul rulează o singură dată la prima inițializare.

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

PowerShell createshortcut.ps1 Puteți copia un fișier .lnk predefinit din pachet pe desktopul utilizatorului și, de asemenea, puteți aduce o pictogramă în spațiul de lucru. LocalCache\\Roaming care rămâne stabilă între versiuni.

# 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

Cu această abordare, vă asigurați că accesul funcționează după o actualizare, fără a atinge fișierul .lnk din fiecare versiuneDacă calea indică aliasul (de exemplu, %localappdata%\\Microsoft\\WindowsApps\\myapp.exe), calea va fi în continuare validă.

Gestionarea erorilor și validări recomandate

Înainte de a genera fișierul .lnk, este recomandabil să validați dacă TargetPath există (cu excepția cazului în care utilizați variabile precum %windir% sau aliasuri). În VBA/VB6, puteți emite o alertă dacă executabilul lipsește sau puteți anula operațiunea; în PowerShell, utilizați Test-Path pentru a verifica dacă calea este accesibilă.

  Cum să utilizați FaceTime pe computerul Windows

Dacă calea pictogramei este o Rețeaua .ico, o tactică utilă este să îl copiați în folderul temporar sau APPDATA al utilizatorului și să îl referențiați de acolo. Iată cum eviți pictogramele sparte dacă resursa de rețea nu este disponibilă.

Când editați comenzi rapide .url, dacă aveți nevoie de propria pictogramă, redeschideți fișierul ca text și adăugați IconFile și IconIndex la sfârșit. Acest lucru vă oferă control complet asupra aspectului său fără a vă baza pe un browser.

Când terminați COM, eliberați obiectele cu ReleaseComObject în PowerShell sau atribuiți Nothing în VB/VBA. Este un detaliu minor, dar ajută la evitarea blocării resurselor în execuții intensive.

Cazuri tipice de defecțiune și cum se pot rezolva

Dacă o implementare prin SCCM se termină cu codul 0, dar accesul nu apare, verificați mai întâi utilizatorul țintă al desktopuluiDacă rulați ca SYSTEM și tastați %USERPROFILE%\Desktop în profilul interactiv, nu veți vedea nimic. Folosiți C:\Users\Public\Desktop pentru a-l face vizibil pentru toată lumea.

În Intune, atunci când generați solicitări Edge cu argumente (de exemplu, o adresă URL cu spații codificate), confirmați că ghilimelele sunt în regulă în -ShortcutArguments și textul ajunge intact. Un singur spațiu nelalocul lui poate strica soarta fișierului .lnk.

Pentru folderele de comenzi rapide din cadrul companiei (de exemplu, „Comenzi rapide SharePoint”), creați mai întâi folderul pe desktopul corect și, dacă doriți să îl evidențiați în Explorer, ancoră la Acces rapid așa cum am văzut cu Shell.Application.

Dacă distribuiți fișierul .lnk deja construit într-un pachet MSIX care este actualizat, nu-l indicați către calea versionată din WindowsApps. Utilizați AppExecutionAlias și copiați pictograma din folderul versionat.

Trucuri utile cu variabile și căi

Pentru a scrie scripturi portabile, bazați-vă pe variabile de mediu: %windir%, %systemroot%, %ProgramFiles% și altele similare. În WSH le puteți extinde cu ExtindețiȘiruriMediuși în PowerShell le puteți consulta prin intermediul comenzii $env:VARIABLE.

Când construiți rute dinamice, verificați dacă folderul de lucru se termină în \ pentru a evita duplicarea barelor sau ruperea TargetPath la concatenare. Este o mică barieră de protecție care evitați greșelile subtile in productie.

Pentru comenzile rapide care necesită parametri complecși, luați în considerare scrierea unui script .cmd sau .ps1 de mici dimensiuni și configurarea comenzii rapide către acesta. Iată cum simplifici fișierul .lnk și aveți un control mai bun asupra ghilitărilor și ordinii argumentelor.

Dacă aveți nevoie de taste rapide, încercați să rezervați combinații cu scrisori semnificative și evitați coliziunile cu comenzile rapide comune. În mediile cu multe aplicații, documentați comenzile rapide astfel încât utilizatorul să poată profită fără încercări și erori.

Ai la dispoziție o gamă largă de opțiuni pentru a crea comenzi rapide în Windows într-un mod fiabil și flexibil. WSH este baza comună...și, pe lângă acestea, puteți alege stratul: scripturi clasice, PowerShell modern sau pachete MSIX cu PSF atunci când căutați procese repetabile la scară largă. Cheia este să selectați calea corectă, să validați contextul de execuție și să evitați blocarea în căi fragile, versionate.