- WSH מאפשר לך ליצור קיצורי דרך בפורמט .lnk ו- .url מתוך VBScript, VBA, VB6, VFP ו- PowerShell עם האובייקט WScript.Shell.
- בפריסות IT, ההקשר (משתמש לעומת מערכת) מחליט אם להשתמש בשולחן העבודה הציבורי או של המשתמש.
- עם MSIX/PSF, AppExecutionAlias נמנע מנתיבים מגרסאות ומאפשר גישה מתמשכת.
- סמלים, ארגומנטים, מקשי קיצור וסגנונות חלונות נשלטים על ידי מאפייני קיצורי דרך.
יצירת קיצורי דרך אינה רק נוחות: זוהי דרך להפוך משימות לאוטומטיות ולשפר את הפרודוקטיביות היומיומית שלך. Windows. Windows תסריט מארח (WSH) הוא מציע דרך פשוטה וחזקה ליצירת קישורים ליישומים, מסמכים וכתובות אינטרנט משפות סקריפטים מרובות.
במדריך מעשי זה אנו מאחדים טכניקות מוכחות עם VBScript, PowerShell, Visual Basic, Visual FoxPro ותרחישים מודרניים עם חבילות MSIX ו-PSFהמטרה היא לאפשר לך לבחור את הגישה המתאימה ביותר לסביבה שלך (משתמש קצה, IT, Intune/SCCM או חבילה), וליישם אותה בביטחון.
מהו Windows Script Host ולמה אולי אכפת לך
Windows Script Host הוא התשתית המאפשרת לך להריץ VBScript ו-JScript באופן מקורי ב-Windows, בנוסף לחשיפת מודל אובייקטים של COM כדי להפוך משימות מערכת לאוטומטיות. אובייקט WScript.Shell זהו החלק המרכזי ליצירת קיצורי דרך בשולחן העבודה, קיצורי דרך בתפריט התחל או תיקיות מיוחדות.
WSH היה חלק מ-Windows מאז גרסאות כמו חלונות 98 ו -2000, וניתן להוסיף אותו למהדורות ישנות יותר כגון Windows NT 4.0 באמצעות רכיבים אופציונליים. במערכות מודרניות זה מגיע משולב ובפועל, מספיק שיהיו לכם קבצי ההפעלה wscript.exe ו- cscript.exe כדי להפעיל סקריפטים.
דרישות ושיטות עבודה מומלצות לפני תחילת העבודה
לפני שמתחילים, מומלץ לעבור על כמה נקודות בסיסיות. ודא ש-WSH זמין ואין מדיניות החוסמת את ביצוע הסקריפטים. בסביבות ארגוניות, אובייקטי מדיניות קבוצתיים והגדרות אנטי-וירוס יכולים להשפיע על VBScript או PowerShell.
הימנעו מעומס קיצורי דרך על שולחן העבודה. צור גישות רק כאשר הן מוסיפות ערך ואם אתם מפיצים אותם באופן מרכזי, הגדירו קריטריון ברור (למשל, תיקיות עבודה או אפליקציות תאגידי קריטי).
אם הסקריפט מופעל כך מערכת או בהקשר של מכונה (Intune/SCCM), חשוב היטב היכן אתה כותב את קובץ ה-.lnk: ייתכן שתרצה להשתמש בשולחן העבודה הציבורי (C:\\Users\\Public\\Desktop) במקום בשולחן העבודה של המשתמש הנוכחי.
בדוק את ה נתיב יעד, הרשאות ומשתני סביבהטעות אופיינית היא להצביע על נתיבים עם גרסאות משתנות (Program Files\\WindowsApps) או להשתמש ב-UNC ללא גישה מהחשבון שמפעיל את הסקריפט.
תיקיות מיוחדות וכיצד לפתור את הנתיבים שלהן
WSH מפענח שמות תיקיות מיוחדות לנתיב האמיתי שלהם באמצעות תיקיות WshShell.Specialבין השימושיים ביותר נמנים שולחן העבודה, תפריט התחל, תוכניות, אתחול או מועדפים, כמו גם הגרסאות שלהם עבור כל המשתמשים (AllUsersDesktop, AllUsersStartMenu וכו'). זה מאפשר לך להיות עצמאי של השפה והמבנה המדויק של הפרופיל.
אם אתם עובדים עם Visual Basic קלאסי או רוצים לקבל נתיבים מ-API, תוכלו להשתמש SHGetSpecialFolderLocation/SHGetPathFromIDList כדי לרשום נתיבים כגון שולחן עבודה, תוכניות אחרונות או מסמכים. זה שימושי כשאתה משלב באפליקציות שאינם תלויים ישירות באובייקט WScript.
תבנית בסיסית: יצירת קיצורי דרך עם WScript.Shell
הזרימה פשוטה: צור את מופע ה-COM, צור את קיצור הדרך, מלא את המאפיינים ושמור. דפוס זה חוזר על עצמו ב-VBScript, VBA, VB6, VFP ו-PowerShell. עם שינויים תחביריים קלים.
' 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 התבנית שווה ערך, רק התחביר והמקום שבו אתה מאחסן את הקוד משתנים. אתה יכול ליצור את קיצור הדרך בשולחן העבודה, להקצות תיאור, סמל, מקש קיצור וסגנון חלון:
' 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
עם FoxPro חזותית ניתן גם להשתמש באובייקט WScript.Shell. הרעיון זהה: אתר את Desktop, צור את קובץ ה-.lnk וקבע מאפיינים כמו סגנון חלון, מיקום סמל, נתיב יעד או צירוף המקשים.
* 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
בכל המקרים, הליבה זהה: צור קיצור דרך, נתיב יעד, שמורמשם, התאם אישית את הארגומנטים, הסמל, ספריית העבודה וסגנון החלון לפי הצורך.
ארגומנטים, סגנון חלון, סמלים וקיצורי דרך
כאשר גישה חייבת להפעיל אפליקציה עם פרמטרים, פשוט מלאו ארגומנטיםלתהליך אתחול בתיקייה ספציפית, השתמשו .WorkingDirectory עם המסלול הנכון.
לגבי המראה, הגדירו .מיקוםאייקון מצביע על קובץ .ico או משאב בקובץ .exe/.dll (ניתן לציין את האינדקס אחרי הפסיק). התנהגות הפתיחה נשלטת באמצעות .סגנון חלון3 מוגדלים, 7 ממוזערים, 4 רגילים.
אם אתם רוצים צירוף מקשים, השתמשו ב מקש קיצור עם תבנית ALT+CTRL+אות (לדוגמה, ALT+CTRL+N). משימה זו מאיצה את הפתיחה, אך לא מומלץ להקצות יותר מדי כדי לא להפריע לקיצורי דרך של המערכת.
קיצורי דרך של כתובות URL (.url)
בנוסף לקבצי .lnk של יישומים, WSH יכול ליצור קיצורי דרך מסוג .url שפותחים את דפדפן ברירת המחדל. ה-TargetPath מצביע על כתובת האינטרנט ואם אתם צריכים סמל משלכם, תוכלו לערוך את קובץ ה-.url מאוחר יותר כדי להוסיף את IconFile ואת 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
גישה זו אידיאלית עבור קישורים ל SharePoint, אינטראנט או יישומי אינטרנט שברצונך להשאיר בהישג יד על שולחן העבודה של המשתמש.
PowerShell עבור IT: Intune, SCCM ופריסות בקנה מידה גדול
PowerShell משלב גישה לאותו מודל COM כמו WSH, כך שניתן ליצור גישה ולהפיץ אותה בהמוניהם. הדבר הרגיל הוא לזהות את שולחן העבודה הנכון (משתמש או ציבורי), צור תיקיות יעד, ובמידת הצורך, הצמיד נתיבים בגישה מהירה.
# 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
ביישומים עם מכווןתבנית זו מאפשרת לך ליצור תיקייה בשולחן העבודה שלך ולהעביר גישה ל-Edge באמצעות פרמטרים כגון כתובת URL של SharePoint. אם יפעל כ-SYSTEM, שולחן העבודה של היעד יהיה הציבורי, גלוי לכל הפרופילים.
En SCCMאם אתם מעדיפים לפרוס קובץ .lnk מוכן מראש, הפקודה המינימלית יכולה להיות פשוטה כמו העתקתו לשולחן העבודה הציבורי: העתק פריט \\server\\path\\access.lnk C:\\משתמשים\\ציבורי\\שולחן עבודהאם זה לא מופיע, בדוק את הנקודות הבאות:
- הקשר ביצועודא שהתוכנית פועלת עם הרשאות מספיקות ועל המשתמש/מערכת הרצוי.
- גישה למשאב המשותףעל החשבון הפועל להיות מסוגל לקרוא את נתיב ה-UNC.
- מסלולים עם רווחים: הקף את -Path ו- -Destination במירכאות.
- עקיצותבסביבות מעורבות של 32/64 סיביות, מאשר שאין הפניות לא רצויות.
הצמד לגישה מהירה באמצעות Shell.Application
בנוסף לשולחן העבודה, ניתן להצמיד תיקיות אל גישה מהירה עם אובייקט Shell.Application COM. זה שימושי כשאתה יוצר נתיב קישור ורוצה שהוא יהיה נגיש ב-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")
}
אם אתם מנהלים צוותים ורוצים שמשתמשים יאתרו במהירות את קיצורי הדרך שלהם, הפעולה הקטנה הזו עושה את ההבדל ביום יום שלהם.
MSIX ו-PSF: צור גישה מבלי להסתמך על נתיבי גירסאות
כאשר אורזים יישומים עם MSIX, נתיב ההתקנה כולל את הגרסה (לדוגמה, C:\\Program Files\\WindowsApps\\MyApp_1.0.0.0_x86__…). נתיב זה משתנה עם כל עדכון, לכן לא כדאי להגדיר קובץ .lnk עם נתיב זה. פתרון: AppExecutionAliasעל ידי הגדרת כינוי במניפסט, ניתן להפעיל את האפליקציה באמצעות %localappdata%\\Microsoft\\WindowsApps\\myapp.exe מבלי להיות קשור לגרסה.
לשם כך, הוסיפו את מרחבי השמות במניפסט (uap3 ו-desktop) וצרו את ההרחבה windows.appExecutionAlias מצביע על קובץ ההפעלה של החבילה. זכור לכלול את השמות ב-IgnorableNamespaces כדי שהמניפסט יזהה אותם.
לאחר מכן, ניתן לשנות את נקודת הכניסה של היישום ל PSFLauncher32.exe/PSFLauncher64.exe (בהתאם לארכיטקטורה) ולהאציל את יצירת הגישה לסקריפט אתחול המוגדר ב-config.json באמצעות PSF. הסקריפט רץ פעם אחת באתחול הראשון.
{
"applications": [
{
"id": "App",
"executable": "MiApp\\MiApp.exe",
"workingDirectory": "MiApp\\",
"startScript": {
"scriptPath": "createshortcut.ps1",
"runInVirtualEnvironment": false,
"waitForScriptToFinish": true,
"showWindow": false,
"runOnce": true
}
}
]
}
פאוולסרל createshortcut.ps1 ניתן להעתיק קובץ .lnk מוכן מהחבילה לשולחן העבודה של המשתמש וגם להביא סמל לסביבת העבודה. מטמון מקומי\\נדידה אשר נשאר יציב בין הגרסאות.
# 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
בעזרת גישה זו אתם מבטיחים שהגישה תפעל לאחר עדכון, בלי לגעת בקובץ .lnk בכל גרסהאם הנתיב מצביע על הכינוי (לדוגמה, %localappdata%\\Microsoft\\WindowsApps\\myapp.exe), הנתיב עדיין יהיה תקף.
טיפול בשגיאות ואימותים מומלצים
לפני יצירת קובץ ה-.lnk מומלץ לאמת ש- קיים TargetPath (אלא אם כן אתם משתמשים במשתנים כמו %windir% או כינויים). ב-VBA/VB6, תוכלו להתריע אם קובץ ההפעלה חסר או לבטל את הפעולה; ב-PowerShell, השתמשו ב-Test-Path כדי לבדוק אם הנתיב נגיש.
אם נתיב הסמל הוא רשת .ico, טקטיקה שימושית היא להעתיק אותו לתיקייה הזמנית או לתיקיית APPDATA של המשתמש, ולהפנות אליו משם. כך תמנעו מאייקונים שבורים אם משאב הרשת אינו זמין.
בעת עריכת קיצורי דרך של .url, אם אתם זקוקים לסמל משלכם, פתחו מחדש את הקובץ כטקסט והוסיפו קובץ אייקונים ואינדקס אייקונים בסוף. זה נותן לך שליטה מלאה על המראה שלו מבלי להסתמך על דפדפן.
כאשר אתה מסיים COM, אובייקטים משחררים עם אובייקט ReleaseCom ב-PowerShell, או להקצות Nothing ב-VB/VBA. זה פרט קטן, אבל מסייע במניעת תליית משאבים בהוצאות להורג אינטנסיביות.
מקרי כשל אופייניים וכיצד לפתור אותם
אם פריסה על ידי SCCM מסתיימת בקוד 0 אך הגישה אינה מופיעה, בדוק תחילה את משתמש היעד של שולחן העבודהאם הפעלת כ-SYSTEM והקלדת %USERPROFILE%\Desktop בפרופיל האינטראקטיבי, לא תראה כלום. השתמש ב-C:\Users\Public\Desktop כדי להפוך אותו לגלוי לכולם.
ב-Intune, כשאתה יוצר הנחיות Edge עם ארגומנטים (לדוגמה, כתובת URL עם רווחים מקודדים), ודא ש המרכאות בסדר ב- -ShortcutArguments והטקסט מגיע שלם. חלל בודד שאינו במקומו יכול לשבור את גורל ה-.lnk.
עבור תיקיות קיצורי דרך של החברה (למשל, "קיצורי דרך של SharePoint"), ראשית צרו את התיקייה בשולחן העבודה הנכון, ואם ברצונכם לסמן אותה ב-Explorer, עוגן לגישה מהירה כפי שראינו עם Shell.Application.
אם אתה מפיץ את קובץ ה-.lnk שכבר בנוי בחבילת MSIX שמתעדכנת, אל תפנה אותו לנתיב הגירסאות בתוך WindowsApps. השתמש ב-AppExecutionAlias ולהעתיק את הסמל מהתיקייה עם הגירסה.
טריקים שימושיים עם משתנים ונתיבים
כדי לכתוב סקריפטים ניידים, הסתמכו על משתני סביבה: %windir%, %systemroot%, %ProgramFiles% ודומיהם. ב-WSH ניתן להרחיב אותם באמצעות הרחבמחרוזותסביבה, וב-PowerShell ניתן להתייחס אליהם דרך $env:VARIABLE.
בעת בניית מסלולים דינמיים, בדקו אם תיקיית העבודה מסתיימת ב-\ כדי להימנע משכפול עמודות או שבירת ה-TargetPath בעת שרשור. זהו מעקה בטיחות קטן ש הימנעו מטעויות עדינות בייצור.
עבור קיצורי דרך הדורשים פרמטרים מורכבים, שקלו לכתוב סקריפט קטן מסוג .cmd או .ps1 ולגרום לקיצור הדרך להצביע אליו. כך מפשטים את קובץ ה-.lnk ויש לך שליטה טובה יותר על הציטוטים וסדר הטיעונים.
אם אתה זקוק למקשי קיצור, נסה לשמור צירופים עם אותיות משמעותיות ולהימנע מהתנגשויות עם קיצורי דרך נפוצים. בסביבות עם אפליקציות רבות, יש לתעד את קיצורי הדרך כדי שהמשתמש יוכל לנצל את היתרון ללא ניסוי וטעייה.
יש לך מגוון אפשרויות ליצירת קיצורי דרך ב-Windows בצורה אמינה וגמישה. WSH הוא הבסיס המשותף, ובנוסף לכך, ניתן לבחור את השכבה: סקריפטים קלאסיים, PowerShell מודרני, או אריזת MSIX עם PSF כשמחפשים תהליכים חוזרים בקנה מידה גדול. המפתח הוא לבחור את הנתיב הנכון, לאמת את הקשר הביצוע ולהימנע מלהיתקע בנתיבים שבירים ומוגדרים בגירסאות.
כותב נלהב על עולם הבתים והטכנולוגיה בכלל. אני אוהב לחלוק את הידע שלי באמצעות כתיבה, וזה מה שאעשה בבלוג הזה, אראה לכם את כל הדברים הכי מעניינים על גאדג'טים, תוכנה, חומרה, טרנדים טכנולוגיים ועוד. המטרה שלי היא לעזור לך לנווט בעולם הדיגיטלי בצורה פשוטה ומשעשעת.