Buat pintasan khusus dengan Windows Script Host

Pembaharuan Terakhir: 29/09/2025
penulis: Isaac
  • WSH memungkinkan Anda membuat pintasan .lnk dan .url dari VBScript, VBA, VB6, VFP dan PowerShell dengan objek WScript.Shell.
  • Dalam penerapan TI, konteks (pengguna vs SISTEM) menentukan apakah akan menggunakan desktop publik atau pengguna.
  • Dengan MSIX/PSF, AppExecutionAlias ​​​​menghindari jalur versi dan memfasilitasi akses persisten.
  • Ikon, argumen, tombol pintas, dan gaya jendela dikontrol oleh properti pintasan.

Pintasan di Windows dengan WSH

Membuat pintasan bukan sekadar kenyamanan: ini adalah cara untuk mengotomatiskan tugas dan meningkatkan produktivitas Anda sehari-hari. Windows. Windows Naskah Tuan rumah (WSH) Ia menawarkan cara yang sederhana dan ampuh untuk menghasilkan tautan ke aplikasi, dokumen, dan alamat web dari berbagai bahasa skrip.

Dalam panduan praktis ini kami menyatukan teknik-teknik yang telah terbukti dengan VBScript, PowerShell, Visual Basic, Visual FoxPro dan skenario modern dengan paket MSIX dan PSFSasarannya adalah untuk memungkinkan Anda memilih pendekatan yang paling sesuai dengan lingkungan Anda (pengguna akhir, TI, Intune/SCCM, atau paket), dan menerapkannya dengan yakin.

Apa itu Windows Script Host dan mengapa Anda mungkin peduli

Windows Script Host adalah infrastruktur yang memungkinkan Anda menjalankan VBScript dan JScript secara asli di Windows, selain mengekspos model objek COM untuk mengotomatiskan tugas sistem. Objek WScript.Shell Ini adalah bagian penting untuk membuat pintasan desktop, pintasan menu Start, atau folder khusus.

WSH telah menjadi bagian dari Windows sejak versi seperti Windows 98 dan 2000, dan dapat ditambahkan ke edisi lama seperti Windows NT 4.0 menggunakan komponen opsional. Dalam sistem modern, hal ini terintegrasi dan dalam praktiknya, cukup memiliki executable wscript.exe dan cscript.exe untuk meluncurkan skrip.

Contoh skrip untuk pintasan

Persyaratan dan praktik terbaik sebelum memulai

Sebelum memulai, ada baiknya meninjau beberapa poin dasar. Verifikasi bahwa WSH tersedia dan tidak ada kebijakan yang memblokir eksekusi skrip. Di lingkungan perusahaan, GPO dan pengaturan antivirus dapat memengaruhi VBScript atau PowerShell.

Hindari mengacaukan desktop Anda dengan pintasan. Hanya buat akses ketika mereka menambahkan nilai dan jika Anda mendistribusikannya secara terpusat, tentukan kriteria yang jelas (misalnya, folder kerja atau apps perusahaan kritis).

Jika skrip dijalankan sebagai SISTEM atau dalam konteks mesin (Intune/SCCM), pikirkan baik-baik di mana Anda menulis .lnk: Anda mungkin ingin menggunakan desktop publik (C:\\Users\\Public\\Desktop) alih-alih desktop pengguna saat ini.

Periksalah jalur tujuan, izin, dan variabel lingkunganKesalahan umum adalah menunjuk ke jalur dengan versi yang berubah (Program Files\\WindowsApps) atau menggunakan UNC tanpa akses dari akun yang menjalankan skrip.

Folder khusus dan cara menyelesaikan jalurnya

WSH menyelesaikan nama folder khusus ke jalur sebenarnya menggunakan WshShell.Folder KhususDi antara yang paling berguna adalah Desktop, StartMenu, Program, Startup, atau Favorit, serta variannya untuk semua pengguna (AllUsersDesktop, AllUsersStartMenu, dll.). Hal ini memungkinkan Anda untuk menjadi mandiri bahasa dan struktur profil yang tepat.

Jika Anda bekerja dengan Visual Basic klasik atau ingin mendapatkan rute dari API, Anda dapat menggunakan SHGetSpecialFolderLocation/SHGetPathFromIDList untuk mencantumkan jalur seperti Desktop, Program Terbaru, atau Dokumen. Berguna saat Anda mengintegrasikan ke dalam aplikasi yang tidak bergantung langsung pada objek WScript.

Pola Dasar: Membuat Pintasan dengan WScript.Shell

Alurnya sederhana: buat contoh COM, buat pintasan, isi properti, dan simpan. Pola ini diulang dalam VBScript, VBA, VB6, VFP dan PowerShell dengan sedikit variasi sintaksis.

' 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 Polanya sama, hanya sintaksis dan lokasi penyimpanan kodenya yang berubah. Anda dapat membuat pintasan di desktop, menetapkan deskripsi, ikon, tombol pintas dan gaya jendela:

' 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

dengan Visual Fox Pro Anda juga bisa menggunakan objek WScript.Shell. Idenya sama: cari Desktop, buat .lnk, dan atur properti seperti GayaJendela, LokasiIkon, JalurTarget atau kombinasi tombol.

* 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

Dalam semua kasus, intinya sama: Buat Pintasan, TargetPath, SimpanDari sana, sesuaikan argumen, ikon, direktori kerja, dan gaya jendela sesuai kebutuhan.

  Cara streaming video melalui jaringan dengan VLC dengan mudah

Argumen, gaya jendela, ikon dan pintasan

Saat akses harus meluncurkan aplikasi dengan parameter, cukup isi ArgumenUntuk prosesnya boot di folder tertentu, gunakan .Direktori Kerja dengan rute yang benar.

Untuk tampilannya, definisikan Lokasi Ikon menunjuk ke .ico atau sumber daya dalam .exe/.dll (Anda dapat menentukan indeks setelah koma). Perilaku pembukaan dikontrol dengan .Gaya Jendela: 3 dimaksimalkan, 7 diminimalkan, 4 normal.

Jika Anda menginginkan kombinasi tombol, gunakan Tombol pintas dengan pola ALT+CTRL+Huruf (misalnya, ALT+CTRL+N). Penugasan ini mempercepat pembukaan, tetapi Tidak disarankan untuk menugaskan terlalu banyak agar tidak mengganggu pintasan sistem.

Pintasan URL (.url)

Selain aplikasi .lnks, WSH dapat membuat pintasan .url yang membuka peramban default. TargetPath menunjuk ke alamat web dan jika Anda memerlukan ikon Anda sendiri, Anda dapat mengedit file .url nanti untuk menambahkan IconFile dan 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

Pendekatan ini ideal untuk tautan ke SharePoint, aplikasi intranet atau web yang ingin Anda simpan di desktop pengguna.

PowerShell untuk TI: Intune, SCCM, dan Penerapan Skala Besar

PowerShell menggabungkan akses ke model COM yang sama seperti WSH, sehingga Anda dapat membuat akses dan mendistribusikannya secara massal. Hal yang biasa dilakukan adalah mendeteksi desktop yang benar (pengguna atau publik), buat folder tujuan dan, jika perlu, sematkan jalur di Akses Cepat.

# 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

Dalam implementasi dengan SelarasPola ini memungkinkan Anda membuat folder di desktop dan memberikan akses ke Edge dengan parameter seperti URL SharePoint. Jika dijalankan sebagai SISTEM, desktop target akan menjadi desktop publik, yang dapat dilihat oleh semua profil.

  Pelajari cara Menghentikan Orang Lain Mengontrol Mesin Chromecast Anda

En SccmJika Anda lebih suka menggunakan .lnk yang sudah dibuat sebelumnya, perintah minimumnya bisa semudah menyalinnya ke desktop publik: Salin-Item \\server\\path\\access.lnk C:\\Users\\Public\\DesktopJika tidak muncul, periksa poin-poin berikut:

  • Konteks eksekusi: Pastikan program berjalan dengan izin yang memadai dan pada pengguna/sistem yang diharapkan.
  • Akses ke sumber daya bersama:Akun yang berjalan harus dapat membaca jalur UNC.
  • Rute dengan spasi: Lampirkan -Path dan -Destination dalam tanda kutip.
  • kegigihan: Dalam lingkungan campuran 32/64-bit, mengonfirmasi bahwa tidak ada pengalihan yang tidak diinginkan.

Sematkan ke Akses Cepat dengan Shell.Application

Selain desktop, Anda dapat menyematkan folder ke Akses cepat dengan objek COM Shell.Application. Ini berguna ketika Anda membuat jalur pengikatan dan ingin jalur tersebut dapat diakses di 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")
}

Jika Anda mengelola tim dan ingin pengguna menemukan pintasan mereka dengan cepat, Tindakan kecil ini membuat perbedaan dalam keseharian mereka.

MSIX dan PSF: Buat akses tanpa bergantung pada jalur versi

Ketika Anda mengemas aplikasi dengan MSIX, jalur instalasi menyertakan versinya (misalnya, C:\\Program Files\\WindowsApps\\MyApp_1.0.0.0_x86__…). Jalur ini berubah setiap kali ada pembaruan, jadi sebaiknya jangan menambahkan .lnk pada jalur tersebut. Solusi: AppExecutionAliasDengan mendefinisikan alias dalam manifes, Anda dapat meluncurkan aplikasi dengan %localappdata%\\Microsoft\\WindowsApps\\myapp.exe tanpa terikat dengan versi.

Untuk melakukan ini, tambahkan namespace di manifes (uap3 dan desktop) dan buat ekstensi aliaseksekusiaplikasiwindows menunjuk ke file yang dapat dieksekusi dari paket tersebut. Ingatlah untuk memasukkan nama-nama tersebut ke dalam IgnorableNamespaces agar manifes mengenalinya.

Setelah itu, Anda dapat mengubah titik masuk aplikasi ke PSFLauncher32.exe/PSFLauncher64.exe (tergantung pada arsitekturnya) dan mendelegasikan pembuatan akses ke skrip startup yang ditentukan dalam config.json menggunakan PSF. Skripnya berjalan sekali pada inisialisasi pertama.

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

PowerShell buat pintasan.ps1 Anda dapat menyalin file .lnk yang sudah jadi dari paket ke desktop pengguna dan juga membawa ikon ke ruang kerja. Cache Lokal\\Roaming yang tetap stabil antar versi.

# 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

Dengan pendekatan ini Anda memastikan bahwa akses berfungsi setelah pembaruan, tanpa menyentuh .lnk di setiap versiJika jalur mengarah ke alias (misalnya, %localappdata%\\Microsoft\\WindowsApps\\myapp.exe), jalur tersebut akan tetap valid.

Penanganan kesalahan dan validasi yang direkomendasikan

Sebelum membuat .lnk, disarankan untuk memvalidasi bahwa TargetPath ada (kecuali Anda menggunakan variabel seperti %windir% atau alias). Di VBA/VB6, Anda dapat memberi tahu jika file yang dieksekusi hilang atau membatalkan operasi; di PowerShell, gunakan Test-Path untuk memeriksa apakah jalurnya dapat diakses.

  Cara menggunakan FaceTime di PC Windows Anda

Jika jalur ikon adalah jaringan .ico, taktik yang berguna adalah menyalinnya ke folder temp atau APPDATA pengguna, dan merujuknya dari sana. Begini cara menghindari ikon rusak jika sumber daya jaringan tidak tersedia.

Saat mengedit pintasan .url, jika Anda memerlukan ikon Anda sendiri, buka kembali file sebagai teks dan tambahkan IconFile dan IconIndex di akhir. Ini memberi Anda kendali penuh atas tampilannya tanpa bergantung pada browser.

Ketika Anda mengakhiri COM, bebaskan objek dengan RilisComObject di PowerShell, atau tetapkan Tidak Ada di VB/VBA. Ini detail kecil, tapi membantu menghindari sumber daya yang menggantung dalam eksekusi intensif.

Kasus kegagalan umum dan cara mengatasinya

Jika penyebaran oleh SCCM berakhir dengan kode 0 tetapi akses tidak muncul, periksa terlebih dahulu pengguna target desktopJika Anda menjalankan sebagai SYSTEM dan mengetik %USERPROFILE%\Desktop ke dalam profil interaktif, Anda tidak akan melihat apa pun. Gunakan C:\Users\Public\Desktop untuk membuatnya terlihat oleh semua orang.

Di Intune, saat Anda membuat perintah Edge dengan argumen (misalnya, URL dengan spasi yang dikodekan), konfirmasikan bahwa tanda kutipnya bagus di -ShortcutArguments dan teks tiba utuh. Satu spasi tidak pada tempatnya dapat menghancurkan nasib .lnk.

Untuk folder pintasan perusahaan (misalnya, "Pintasan SharePoint"), pertama buat folder di desktop yang benar, dan jika Anda ingin menyorotnya di Explorer, jangkar ke Akses Cepat seperti yang telah kita lihat dengan Shell.Application.

Jika Anda mendistribusikan .lnk yang sudah dibuat dalam paket MSIX yang sedang diperbarui, jangan arahkan ke jalur versi dalam WindowsApps. Gunakan AppExecutionAlias dan salin ikon dari folder versi.

Trik berguna dengan variabel dan jalur

Untuk menulis skrip portabel, andalkan Variabel Lingkungan: %windir%, %systemroot%, %ProgramFiles%, dan sejenisnya. Di WSH, Anda dapat memperluasnya dengan PerluasStringLingkungan, dan di PowerShell Anda dapat merujuknya melalui $env:VARIABLE.

Saat membangun rute dinamis, periksa apakah folder kerja berakhiran \ untuk menghindari duplikasi bar atau merusak TargetPath saat menggabungkan. Ini adalah pagar pembatas kecil yang hindari kesalahan-kesalahan kecil dalam produksi.

Untuk pintasan yang memerlukan parameter kompleks, pertimbangkan untuk menulis skrip .cmd atau .ps1 kecil dan mengarahkan pintasan ke sana. Beginilah cara menyederhanakan .lnk dan Anda memiliki kontrol yang lebih baik atas kutipan dan urutan argumen.

Jika Anda memerlukan hotkey, coba pesan kombinasi dengan huruf-huruf penting dan hindari bentrokan dengan pintasan umum. Di lingkungan dengan banyak aplikasi, dokumentasikan pintasan tersebut agar pengguna dapat memanfaatkannya tanpa coba-coba.

Anda memiliki berbagai pilihan untuk membuat pintasan di Windows dengan cara yang andal dan fleksibel. WSH adalah basis umum, dan selain itu, Anda dapat memilih lapisan: skrip klasik, PowerShell modern, atau pengemasan MSIX dengan PSF jika Anda menginginkan proses yang dapat diulang dalam skala besar. Kuncinya adalah memilih jalur yang tepat, memvalidasi konteks eksekusi, dan menghindari terjebak dalam jalur yang rapuh dan memiliki versi.