- WSH ju lejon të krijoni shkurtore .lnk dhe .url nga VBScript, VBA, VB6, VFP dhe PowerShell me objektin WScript.Shell.
- Në implementimet e IT-së, konteksti (përdoruesi kundrejt SISTEMI) vendos nëse do të përdoret desktopi publik apo ai i përdoruesit.
- Me MSIX/PSF, AppExecutionAlias shmang shtigjet e versionuara dhe lehtëson aksesin e vazhdueshëm.
- Ikonat, argumentet, tastet e shkurtra dhe stilet e dritareve kontrollohen nga vetitë e shkurtoreve.
Krijimi i shkurtesave nuk është vetëm një lehtësi: është një mënyrë për të automatizuar detyrat dhe për të përmirësuar produktivitetin tuaj të përditshëm. Dritaret. Dritaret Dorëshkrim Pritës (WSH) Ofron një mënyrë të thjeshtë dhe të fuqishme për të gjeneruar lidhje me aplikacione, dokumente dhe adresa interneti nga gjuhë të shumta skriptimi.
Në këtë udhëzues praktik ne bashkojmë teknika të provuara me VBScript, PowerShell, Visual Basic, Visual FoxPro dhe skenarë modernë me paketa MSIX dhe PSFQëllimi është t'ju mundësojë të zgjidhni qasjen që i përshtatet më së miri mjedisit tuaj (përdorues fundor, IT, Intune/SCCM ose i paketuar) dhe ta zbatoni atë me besim.
Çfarë është Windows Script Host dhe pse mund t'ju interesojë
Windows Script Host është infrastruktura që ju lejon të ekzekutoni VBScript dhe JScript në mënyrë native në Windows, përveç ekspozimit të një modeli objekti COM për të automatizuar detyrat e sistemit. Objekti WScript.Shell Është pjesa kryesore për të krijuar shkurtore në desktop, shkurtore në menunë Start ose dosje speciale.
WSH ka qenë pjesë e Windows që nga versione të tilla si Windows 98 dhe 2000, dhe mund të shtohet në botimet më të vjetra si Windows NT 4.0 duke përdorur komponentë opsionalë. Në sistemet moderne, ajo vjen e integruar dhe në praktikë, mjafton të kesh ekzekutuesit wscript.exe dhe cscript.exe për të nisur skriptet.
Kërkesat dhe praktikat më të mira para fillimit
Para se të filloni, është mirë të rishikoni disa pika themelore. Verifikoni që WSH është i disponueshëm dhe nuk ka politika që bllokojnë ekzekutimin e skripteve. Në mjediset e korporatave, GPO-të dhe cilësimet e antivirusit mund të ndikojnë në VBScript ose PowerShell.
Shmangni mbingarkesën e desktopit tuaj me shkurtore. Krijoni qasje vetëm kur ato shtojnë vlerë dhe nëse i shpërndani ato në mënyrë qendrore, përcaktoni një kriter të qartë (p.sh., dosje pune ose apps korporatë kritike).
Nëse skripti ekzekutohet si SISTEMI ose në kontekstin e makinës (Intune/SCCM), mendo me kujdes se ku e shkruan .lnk: mund të duash të përdorësh desktopin publik (C:\\Users\\Public\\Desktop) në vend të desktopit të përdoruesit aktual.
Kontrolloni rruga e destinacionit, lejet dhe variablat e mjedisitNjë gabim tipik është të tregosh shtigje me versione që ndryshojnë (Program Files\\WindowsApps) ose të përdorësh UNC pa qasje nga llogaria që ekzekuton skriptin.
Dosjet speciale dhe si të zgjidhni shtigjet e tyre
WSH i zgjidh emrat e dosjeve speciale në rrugën e tyre aktuale duke përdorur WshShell.SpecialFoldersNdër më të dobishmet janë Desktop, StartMenu, Programs, Startup ose Favorites, si dhe variantet e tyre për të gjithë përdoruesit (AllUsersDesktop, AllUsersStartMenu, etj.). Kjo ju lejon të jeni të pavarur të gjuhës dhe strukturën e saktë të profilit.
Nëse po punoni me Visual Basic klasik ose dëshironi të merrni rrugë nga API, mund të përdorni SHGetSpecialFolderLocation/SHGetPathFromIDList për të listuar shtigje të tilla si Desktop, Programet e Fundit ose Dokumentet. Është e dobishme kur integroheni në aplikacione që nuk varen drejtpërdrejt nga objekti WScript.
Modeli Bazë: Krijimi i Shkurtoreve me WScript.Shell
Rrjedha është e thjeshtë: krijoni instancën COM, gjeneroni shkurtoren, plotësoni vetitë dhe ruajeni. Ky model përsëritet në VBScript, VBA, VB6, VFP dhe PowerShell. me ndryshime të vogla sintaksore.
' 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 Modeli është ekuivalent, ndryshon vetëm sintaksa dhe vendi ku e vendosni kodin. Mund të krijoni shkurtoren në desktop, të caktoni një përshkrim, ikonë, buton i shpejtë dhe stili i dritares:
' 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
me VisualFoxPro Mund të përdorni edhe objektin WScript.Shell. Ideja është identike: gjeni Desktop, krijoni skedarin .lnk dhe vendosni vetitë si Stili i Dritares, Vendndodhja e Ikonës, Shtegu i Targetit ose kombinimi i tasteve.
* 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ë të gjitha rastet, thelbi është i njëjtë: Krijo Shkurtore, Shtegu i Targetit, RuajNga aty, personalizoni argumentet, ikonën, direktorinë e punës dhe stilin e dritares sipas nevojës.
Argumentet, stili i dritares, ikonat dhe shkurtoret
Kur qasja duhet të hapë një aplikacion me parametra, thjesht plotësoni ArgumentetPër procesin boot në një dosje specifike, përdorni .Direktoria e Punës me rrugën e duhur.
Për pamjen, përcaktoni .IconLocation duke treguar një .ico ose një burim në një .exe/.dll (mund të specifikoni indeksin pas presjes). Sjellja e hapjes kontrollohet me .Stili i Dritares: 3 të maksimizuara, 7 të minimizuara, 4 normale.
Nëse dëshironi një kombinim tasti, përdorni .Tast i shpejtë me modelin ALT+CTRL+Shkronja (për shembull, ALT+CTRL+N). Ky caktim përshpejton hapjen, por Nuk këshillohet të caktoni shumë në mënyrë që të mos ndërhyjë në shkurtoret e sistemit.
Shkurtesat e URL-së (.url)
Përveç .lnks të aplikacionit, WSH mund të krijojë shkurtore .url që hapin shfletuesin parazgjedhur. TargetPath tregon adresën e internetit Dhe nëse ju nevojitet ikona juaj, mund ta modifikoni skedarin .url më vonë për të shtuar IconFile dhe 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
Kjo qasje është ideale për lidhje me SharePoint, intranet ose aplikacione web që dëshironi ta lini afër në desktopin e përdoruesit.
PowerShell për IT: Intune, SCCM dhe Vendosje në Shkallë të Largët
PowerShell përfshin akses në të njëjtin model COM si WSH, kështu që ju mund të krijoni akses dhe ta shpërndani atë në masë. Gjëja e zakonshme është të zbuloni desktopin e saktë (përdorues ose publik), gjeneroni dosje destinacioni dhe, nëse është e nevojshme, vendosni shtigje në Quick Access.
# 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ë implementime me IntuneKy model ju lejon të krijoni një dosje në desktopin tuaj dhe të kaloni qasjen në Edge me parametra të tillë si një URL e SharePoint. Nëse ekzekutohet si SYSTEM, desktopi i synuar do të jetë ai publik, i dukshëm për të gjitha profilet.
En SCCMNëse preferoni të vendosni një .lnk të parapërgatitur, komanda minimale mund të jetë aq e thjeshtë sa kopjimi i saj në desktopin publik: Kopjo-Artikullin \\server\\path\\access.lnk C:\\Users\\Public\\DesktopNëse nuk shfaqet, kontrolloni këto pika:
- Konteksti i ekzekutimitSigurohuni që programi të funksionojë me leje të mjaftueshme dhe në përdoruesin/sistemin e pritur.
- Qasja në burimin e përbashkëtLlogaria në ekzekutim duhet të jetë në gjendje të lexojë shtegun UNC.
- Rrugët me hapësiraVendosni -Rrugën dhe -Destinacionin në thonjëza.
- TharmiNë mjedise të përziera 32/64-bit, konfirmon që nuk ka ridrejtime të padëshiruara.
Ngjit në Qasje të Shpejtë me Shell.Application
Përveç desktopit, mund të fiksoni dosjet edhe në Qasje e shpejtë me objektin Shell.Application COM. Kjo është e dobishme kur krijoni një shteg lidhës dhe dëshironi që ai të jetë i arritshëm 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")
}
Nëse menaxhoni ekipe dhe dëshironi që përdoruesit t'i gjejnë shpejt shkurtoret e tyre, Ky veprim i vogël bën një ndryshim në ditën e tyre të ditës.
MSIX dhe PSF: Krijimi i aksesit pa u mbështetur në shtigje të versionuara
Kur paketoni aplikacione me MSIX, shtegu i instalimit përfshin versionin (për shembull, C:\\Program Files\\WindowsApps\\MyApp_1.0.0.0_x86__…). Ai ndryshon me çdo përditësim, kështu që është një ide e keqe të caktoni një .lnk me atë shteg. Zgjidhja: AppExecutionAliasDuke përcaktuar një pseudonim në manifest, mund ta hapni aplikacionin me %localappdata%\\Microsoft\\WindowsApps\\myapp.exe pa u lidhur me versionin.
Për ta bërë këtë, shtoni hapësirat e emrave në manifest (uap3 dhe desktop) dhe krijoni zgjerimin windows.appExecutionAlias duke treguar skedarin ekzekutues të paketës. Mos harroni të përfshini emrat në IgnorableNamespaces në mënyrë që manifesti t'i njohë ato.
Më pas, mund ta ndryshoni pikën e hyrjes së aplikacionit në PSFLauncher32.exe/PSFLauncher64.exe (në varësi të arkitekturës) dhe delegoni krijimin e aksesit në një skript fillimi të përcaktuar në config.json duke përdorur PSF. Skripti ekzekutohet një herë në inicializimin e parë.
{
"applications": [
{
"id": "App",
"executable": "MiApp\\MiApp.exe",
"workingDirectory": "MiApp\\",
"startScript": {
"scriptPath": "createshortcut.ps1",
"runInVirtualEnvironment": false,
"waitForScriptToFinish": true,
"showWindow": false,
"runOnce": true
}
}
]
}
PowerShell createshortcut.ps1 Mund të kopjoni një skedar .lnk të gatshëm nga paketa në desktopin e përdoruesit dhe gjithashtu të sillni një ikonë në hapësirën e punës. LocalCache\\Roaming i cili mbetet i qëndrueshëm midis versioneve.
# 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
Me këtë qasje ju siguroheni që qasja të funksionojë pas një përditësimi, pa prekur .lnk në çdo versionNëse shtegu tregon pseudonimin (për shembull, %localappdata%\\Microsoft\\WindowsApps\\myapp.exe), shtegu do të jetë ende i vlefshëm.
Trajtimi i gabimeve dhe validimet e rekomanduara
Përpara se të gjeneroni .lnk, këshillohet të vërtetoni që TargetPath ekziston (përveç nëse përdorni variabla si %windir% ose pseudonime). Në VBA/VB6, mund të njoftoni nëse mungon skedari ekzekutues ose të anuloni operacionin; në PowerShell, përdorni Test-Path për të kontrolluar nëse shtegu është i arritshëm.
Nëse shtegu i ikonës është një rrjeti .ico, një taktikë e dobishme është ta kopjoni atë në dosjen e përkohshme të përdoruesit ose në dosjen APPDATA dhe ta referoni që andej. Ja si t’i shmangni ikonat e prishura nëse burimi i rrjetit nuk është i disponueshëm.
Kur modifikoni shkurtoret .url, nëse ju nevojitet ikona juaj, rihapni skedarin si tekst dhe shtoni IconFile dhe IconIndex në fund. Kjo ju jep kontroll të plotë mbi pamjen e saj pa u mbështetur në një shfletues.
Kur e ndërpret COM, lirohen objektet me ReleaseComObject në PowerShell, ose caktoni Asgjë në VB/VBA. Është një detaj i vogël, por ndihmon në shmangien e varjes së burimeve në ekzekutime intensive.
Rastet tipike të dështimeve dhe si t'i zgjidhni ato
Nëse një vendosje nga SCCM përfundon me kodin 0, por qasja nuk shfaqet, së pari kontrolloni përdoruesi i synuar i desktopitNëse do të ekzekutonit si SYSTEM dhe do të shkruanit %USERPROFILE%\Desktop në profilin interaktiv, nuk do të shihni asgjë. Përdorni C:\Users\Public\Desktop për ta bërë të dukshëm për të gjithë.
Në Intune, kur gjeneroni kërkesa Edge me argumente (për shembull, një URL me hapësira të koduara), konfirmoni që thonjëzat janë në rregull në -ShortcutArguments dhe teksti arrin i paprekur. Një hapësirë e vetme jashtë vendit mund të prishë fatin e .lnk.
Për dosjet e shkurtesave të korporatave (p.sh., "Shortcuts SharePoint"), së pari krijoni dosjen në desktopin e duhur dhe, nëse doni ta nxirrni në pah në Explorer, ankorim për Qasje të Shpejtë siç e kemi parë me Shell.Application.
Nëse e shpërndani skedarin .lnk të ndërtuar tashmë në një paketë MSIX që po përditësohet, mos e drejtoni atë në shtegun e versionuar brenda WindowsApps. Përdor AppExecutionAlias dhe kopjoni ikonën nga dosja e versionuar.
Truke të dobishme me variabla dhe shtigje
Për të shkruar skripte portative, mbështetuni te Variablat e Mjedisit: %windir%, %systemroot%, %ProgramFiles% dhe të ngjashme. Në WSH mund t'i zgjeroni ato me ZgjeroStringet e Mjedisit, dhe në PowerShell mund t'u referoheni atyre nëpërmjet $env:VARIABLE.
Kur ndërtoni rrugë dinamike, kontrolloni nëse dosja e punës mbaron me \ për të shmangur dyfishimin e shufrave ose prishjen e TargetPath gjatë bashkimit. Është një parmak i vogël mbrojtës që shmangni gabimet e vogla në prodhim.
Për shkurtesat që kërkojnë parametra kompleksë, merrni në konsideratë shkrimin e një skripti të vogël .cmd ose .ps1 dhe që shkurtesa të tregojë atë skript. Ja se si e thjeshtoni .lnk dhe ke kontroll më të mirë mbi citimin dhe rendin e argumenteve.
Nëse keni nevojë për taste të shkurtra, provoni të rezervoni kombinime me shkronja domethënëse dhe shmangni përplasjet me shkurtesat e zakonshme. Në mjedise me shumë aplikacione, dokumentoni shkurtesat në mënyrë që përdoruesi të mund të përfitoni pa prova dhe gabime.
Keni një gamë opsionesh për të krijuar shkurtore në Windows në një mënyrë të besueshme dhe fleksibile. WSH është baza e përbashkët, dhe për më tepër, mund të zgjidhni shtresën: skripte klasike, PowerShell moderne ose paketim MSIX me PSF kur kërkoni procese të përsëritshme në shkallë të gjerë. Çelësi është të zgjidhni rrugën e duhur, të validoni kontekstin e ekzekutimit dhe të shmangni bllokimin e vetes në shtigje të brishta dhe të versionuara.
Shkrimtar i apasionuar pas botës së bajteve dhe teknologjisë në përgjithësi. Më pëlqen të ndaj njohuritë e mia përmes shkrimit, dhe kjo është ajo që do të bëj në këtë blog, duke ju treguar të gjitha gjërat më interesante në lidhje me pajisjet, softuerin, harduerin, tendencat teknologjike dhe më shumë. Qëllimi im është t'ju ndihmoj të lundroni në botën dixhitale në një mënyrë të thjeshtë dhe argëtuese.