使用 Windows Script Host 建立自訂快捷方式

最後更新: 29/09/2025
作者: 艾薩克
  • WSH 允許您從 VBScript、VBA、VB6、VFP 和 PowerShell的 使用 WScript.Shell 物件。
  • 在 IT 部署中,情境(使用者與系統)決定是否使用公共桌面或使用者桌面。
  • 透過 MSIX/PSF,AppExecutionAlias 避免了版本化路徑並促進了持久存取。
  • 圖示、參數、熱鍵和視窗樣式由捷徑屬性控制。

使用 WSH 在 Windows 中設定快捷方式

建立捷徑不僅僅是為了方便:它是一種自動執行任務並提高日常工作效率的方法。 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 的一部分 Windows 98和2000,並且可以使用選用元件新增至舊版(如 Windows NT 4.0)。 在現代系統中它集成 實際上,擁有可執行檔 wscript.exe 和 cscript.exe 來啟動腳本就足夠了。

快捷方式腳本範例

開始之前的要求和最佳實踐

在開始之前,最好先回顧一些基本要點。 驗證 WSH 是否可用 並且沒有阻止腳本執行的策略。在企業環境中,GPO 和防毒設定可能會影響 VBScript 或 PowerShell。

避免快捷方式弄亂您的桌面。 僅在增加價值時才創建存取權限 如果你集中分發它們,請定義一個明確的標準(例如,工作資料夾或 應用程序 關鍵企業)。

如果腳本運行如下 SYSTEM 或機器環境中 (Intune/SCCM),仔細考慮您在哪裡寫入 .lnk:您可能想要使用公共桌面(C:\\Users\\Public\\Desktop)而不是目前使用者的桌面。

檢查 目標路徑、權限和環境變數一個典型的錯誤是指向版本不斷變化(Program Files\\WindowsApps)的路徑或使用沒有執行腳本的帳戶存取權限的 UNC。

特殊資料夾及其路徑解析方法

WSH 使用以下方法將特殊資料夾名稱解析為其實際路徑 WshShell.特殊資料夾其中最有用的是桌面、開始功能表、程式、啟動或收藏夾,以及所有使用者的變體(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

在所有情況下,核心都是相同的: 建立快捷方式,目標路徑,儲存從那裡,根據需要自訂參數、圖示、工作目錄和視窗樣式。

  如何使用 VLC 輕鬆地透過網路傳輸視頻

參數、視窗樣式、圖示和快捷方式

當訪問必須啟動帶有參數的應用程式時,只需填寫 .參數. 對於過程 開機 在特定資料夾中,使用 .工作目錄 走正確的路線。

對於外觀,定義 .圖示位置 指向 .ico 檔案或 .exe/.dll 檔案中的資源(可以在逗號後指定索引)。打開行為由 .WindowStyle:3 最大化,7 最小化,4 正常。

如果您想要組合鍵,請使用 .熱鍵 使用 ALT+CTRL+字母組合鍵(例如,ALT+CTRL+N)。此組合鍵可加快開啟速度,但 不建議分配太多 以免干擾系統快捷方式。

URL (.url) 快捷方式

除了應用程式 .lnks 之外,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、內部網路或 Web 應用程式 您想將其留在用戶的桌面上以供隨時使用。

適用於 IT 的 PowerShell:Intune、SCCM 和大規模部署

PowerShell 包含對與 WSH 相同的 COM 模型的訪問,因此您可以建立存取權限並大量分發。 通常的做法是偵測正確的桌面 (使用者或公共),產生目標資料夾,並在必要時在快速存取中固定路徑。

# 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

在實施中 Intune的此模式可讓您在桌面上建立一個資料夾,並使用 SharePoint URL 等參數將存取權限傳遞給 Edge。 如果以 SYSTEM 身分執行,目標桌面將是公共桌面,所有設定檔都可以看到。

  了解如何阻止其他人控制您的 Chromecast 機器

En SCCM如果您希望部署預製的 .lnk,則最小命令可以簡單到將其複製到公共桌面: 複製項目 \\server\\path\\access.lnk C:\\Users\\Public\\Desktop如果沒有出現,請檢查以下幾點:

  • 執行上下文:確保程式在預期的使用者/系統上以足夠的權限運作。
  • 存取共享資源:運行帳戶必須能夠讀取 UNC 路徑。
  • 帶空格的路線:將 -Path 和 -Destination 括在引號中。
  • 位數:在混合 32/64 位元環境中,確認沒有不需要的重定向。

使用 Shell.Application 固定到快速訪問

除了桌面之外,您還可以將資料夾固定到 快速訪問 使用 Shell.Application COM 物件。當您建立綁定路徑並希望其在資源管理器中可存取時,這很有用。

# 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:無需依賴版本化路徑即可建立存取權限

當您使用以下方式打包應用程式時 微星安裝路徑包含版本資訊(例如,C:\\Program Files\\WindowsApps\\MyApp_1.0.0.0_x86__…)。每次更新後,安裝路徑都會發生變化,因此最好不要設定包含該路徑的 .lnk 檔案。 解決方案:AppExecutionAlias透過在清單中定義別名,您可以使用 %localappdata%\\Microsoft\\WindowsApps\\myapp.exe 啟動應用程序,而不受版本限制。

為此,請在清單中新增命名空間(uap3 和桌面)並建立擴展 windows.appExecutionAlias 指向包的可執行檔。請記得將名稱包含在 IgnorableNamespaces 中,以便清單能夠識別它們。

之後,您可以將應用程式入口點變更為 PSFLauncher32.exe/PSFLauncher64.exe (取決於架構)並使用 PSF 將存取的建立委託給 config.json 中定義的啟動腳本。 腳本運行一次 首次初始化時。

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

PowerShell 建立快捷方式.ps1 您可以將現成的 .lnk 檔案從套件複製到使用者的桌面,並將圖示帶到工作區。 LocalCache\\漫遊 各個版本之間保持穩定。

# 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 檢查路徑是否可存取。

  如何在 Windows PC 上使用 FaceTime

如果圖標路徑是 .ico 網路,一個有用的策略是將其複製到使用者的臨時或 APPDATA 資料夾,然後從那裡引用它。 這是避免圖示損壞的方法 如果網路資源無法使用。

編輯 .url 快捷方式時,如果需要自己的圖標,請重新打開文件作為文字並添加 IconFile 和 IconIndex 在末尾。這樣您就可以完全控制其外觀,而無需依賴瀏覽器。

當您終止 COM 時,釋放對象 釋放ComObject 在 PowerShell 中,或在 VB/VBA 中賦值 Nothing。這只是一個小細節,但 有助於避免資源掛起 在密集的處決中。

典型故障案例及解決方法

如果 SCCM 部署以代碼 0 結束,但未出現存取權限,請先檢查 桌面的目標用戶如果您以 SYSTEM 身分執行,並在互動式設定檔中輸入 %USERPROFILE%\Desktop,則不會看到任何內容。請使用 C:\Users\Public\Desktop 將其設定為對所有人可見。

在 Intune 中,當您產生帶有參數的 Edge 提示(例如,帶有編碼空格的 URL)時,請確認 引號沒問題 在 -ShortcutArguments 中,文字完好無損地到達。 一個空格不合適 可以打破.lnk的命運。

對於公司快捷方式資料夾(例如「SharePoint 捷徑」),請先在正確的桌面上建立該資料夾,如果要在資源管理器中反白顯示它, 錨點至快速訪問 正如我們在 Shell.Application 中看到的。

如果您在正在更新的 MSIX 套件中分發已建置的 .lnk,請不要將其指向 WindowsApps 中的版本路徑。 使用 AppExecutionAlias 並將圖示從版本資料夾複製出來。

變數和路徑的實用技巧

要編寫可移植腳本,請依賴 環境變量: %windir%、%systemroot%、%ProgramFiles% 等。在 WSH 中,您可以使用以下命令展開它們 展開環境字串,並且在 PowerShell 中您可以透過 $env:VARIABLE 引用它們。

在建構動態路由時,檢查 工作資料夾以 \ 結尾 以避免在連線時出現重複的條形或破壞 TargetPath。這是一個小護欄, 避免細微的錯誤 在生產中。

對於需要複雜參數的快捷方式,請考慮編寫一個小的 .cmd 或 .ps1 腳本並讓快捷方式指向它。 這是簡化 .lnk 的方法 並且您可以更好地控制參考和參數順序。

如果您需要熱鍵,請嘗試使用 重要字母 並避免與常用快捷鍵衝突。在包含多個應用程式的環境中,請記錄快捷鍵,以便用戶 無需反覆試驗即可利用.

您可以透過多種方式以可靠且靈活的方式在 Windows 中建立捷徑。 WSH 是通用基礎除此之外,您還可以選擇以下層級:經典腳本、現代 PowerShell 或使用 PSF 的 MSIX 打包(如果您需要大規模重複的流程)。關鍵在於選擇正確的路徑,驗證執行上下文,並避免陷入脆弱的版本化路徑。