Pendaftaran Aplikasi
Topik ini membahas bagaimana aplikasi dapat mengekspos informasi tentang diri mereka sendiri yang diperlukan untuk mengaktifkan skenario tertentu. Ini termasuk informasi yang diperlukan untuk menemukan aplikasi, kata kerja yang didukung aplikasi dan jenis file yang dapat ditangani aplikasi.
Topik ini diatur sebagai berikut:
- Menemukan Aplikasi yang Dapat Dieksekusi
- Mendaftarkan Aplikasi
- Mendaftarkan Kata Kerja dan Informasi Asosiasi File Lainnya
- Mendaftarkan Jenis yang Dirasakan
- Topik terkait
Catatan
Aplikasi juga dapat didaftarkan dalam aplikasi panel kontrol Set Program Access and Computer Defaults (SPAD) dan Set Your Default Programs (SYDP). Untuk informasi tentang pendaftaran aplikasi SPAD dan SYDP, lihat Pedoman Asosiasi File dan Program Default, dan Mengatur Akses Program dan Default Komputer (SPAD).
Menemukan Aplikasi yang Dapat Dieksekusi
Ketika fungsi ShellExecuteEx dipanggil dengan nama file yang dapat dieksekusi dalam parameter lpFile-nya , ada beberapa tempat di mana fungsi mencari file. Sebaiknya daftarkan aplikasi Anda di subkuntang registri Jalur Aplikasi . Melakukannya menghindari kebutuhan aplikasi untuk memodifikasi variabel lingkungan PATH sistem.
File dicari di lokasi berikut:
- Direktori kerja saat ini.
- Direktori Windows saja (tidak ada subdirektori yang dicari).
- Direktori Windows\System32 .
- Direktori yang tercantum dalam variabel lingkungan PATH.
- Direkomendasikan: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
Mendaftarkan Aplikasi
Subkunjud registri Jalur Aplikasi dan Aplikasi digunakan untuk mendaftar dan mengontrol perilaku sistem atas nama aplikasi. Subkuntang Jalur Aplikasi adalah lokasi yang disukai .
Menggunakan Subkunjud Jalur Aplikasi
Di Windows 7 dan yang lebih baru, kami sangat menyarankan Anda menginstal aplikasi per pengguna daripada per komputer. Aplikasi yang diinstal untuk per pengguna dapat didaftarkan di HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths. Aplikasi yang diinstal untuk semua pengguna komputer dapat didaftarkan di HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths.
Entri yang ditemukan di bawah Jalur Aplikasi digunakan terutama untuk tujuan berikut:
- Untuk memetakan nama file aplikasi yang dapat dieksekusi ke jalur file yang sepenuhnya memenuhi syarat.
- Untuk informasi yang telah diproses sebelumnya ke variabel lingkungan PATH berdasarkan per aplikasi, per proses.
Jika nama subkun tangan Jalur Aplikasi cocok dengan nama file, Shell akan melakukan dua tindakan:
- Entri (Default) digunakan sebagai jalur file yang sepenuhnya memenuhi syarat.
- Entri Jalur untuk subkundang tersebut telah diproses ke variabel lingkungan PATH dari proses tersebut. Jika ini tidak diperlukan, nilai Jalur dapat dihilangkan.
Potensi masalah yang perlu diperhatikan meliputi:
- Shell membatasi panjang baris perintah hingga MAX_PATH * 2 karakter. Jika ada banyak file yang terdaftar sebagai entri registri atau jalurnya panjang, nama file nanti dalam daftar dapat hilang saat baris perintah terpotok.
- Beberapa aplikasi tidak menerima beberapa nama file dalam baris perintah.
- Beberapa aplikasi yang menerima beberapa nama file tidak mengenali format tempat Shell menyediakannya. Shell menyediakan daftar parameter sebagai string yang dikutip, tetapi beberapa aplikasi mungkin memerlukan string tanpa tanda kutip.
- Tidak semua item yang dapat diseret adalah bagian dari sistem file; misalnya, printer. Item-item ini tidak memiliki jalur Win32 standar, jadi tidak ada cara untuk memberikan nilai lpParameters yang bermakna ke ShellExecuteEx.
Menggunakan entri DropTarget menghindari potensi masalah ini dengan menyediakan akses ke semua format clipboard, termasuk CFSTR_SHELLIDLIST (untuk daftar file panjang) dan CFSTR_FILECONTENTS (untuk objek non-file-system).
Untuk mendaftarkan dan mengontrol perilaku aplikasi Anda dengan subkunjud Jalur Aplikasi:
Tambahkan subkuntang dengan nama yang sama dengan file yang dapat dieksekusi ke subkuntang Jalur Aplikasi, seperti yang ditunjukkan pada entri registri berikut.
HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER SOFTWARE Microsoft Windows CurrentVersion App Paths file.exe (Default) DontUseDesktopChangeRouter DropTarget Path UseUrl
Lihat tabel berikut untuk detail entri subkunci Jalur Aplikasi .
Entri registri | Detail |
---|---|
(Default) | Adalah jalur yang sepenuhnya memenuhi syarat ke aplikasi. Nama aplikasi yang disediakan dalam entri (Default) dapat dinyatakan dengan atau tanpa ekstensi .exe. Jika perlu, fungsi ShellExecuteEx menambahkan ekstensi saat mencari subkunjud Jalur Aplikasi . Entri adalah dari jenis REG_SZ . |
DontUseDesktopChangeRouter | Wajib bagi aplikasi debugger untuk menghindari kebuntuan dialog file saat men-debug proses Windows Explorer. Mengatur entri DontUseDesktopChangeRouter menghasilkan penanganan pemberitahuan perubahan yang sedikit kurang efisien. Entri adalah jenis REG_DWORD dan nilainya 0x1. |
DropTarget | Adalah pengidentifikasi kelas (CLSID). Entri DropTarget berisi CLSID objek (biasanya server lokal daripada server dalam proses) yang mengimplementasikan IDropTarget. Secara default, ketika target drop adalah file yang dapat dieksekusi, dan tidak ada nilai DropTarget yang disediakan, Shell mengonversi daftar file yang dijatuhkan menjadi parameter baris perintah dan meneruskannya ke ShellExecuteEx melalui lpParameters. |
Jalur | Memasok string (dalam bentuk daftar direktori yang dipisahkan titik koma) untuk ditambahkan ke variabel lingkungan PATH saat aplikasi diluncurkan dengan memanggil ShellExecuteEx. Ini adalah jalur yang sepenuhnya memenuhi syarat ke .exe. Ini adalah REG_SZ. Di Windows 7 dan yang lebih baru, tipenya bisa REG_EXPAND_SZ, dan biasanya REG_EXPAND_SZ %ProgramFiles%.
Catatan: Selain entri (Default), Jalur, dan DropTarget yang dikenali oleh Shell, aplikasi juga dapat menambahkan nilai kustom ke subkuntang Jalur Aplikasi file yang dapat dieksekusi. Kami mendorong pengembang aplikasi untuk menggunakan subkunjud Jalur Aplikasi untuk menyediakan jalur khusus aplikasi alih-alih membuat penambahan ke jalur sistem global. |
SupportedProtocols | Membuat string yang berisi skema protokol URL untuk kunci tertentu. Ini dapat berisi beberapa nilai registri untuk menunjukkan skema mana yang didukung. String ini mengikuti format scheme1:scheme2. Jika daftar ini tidak kosong, file: akan ditambahkan ke string. Protokol ini secara implisit didukung ketika SupportedProtocols didefinisikan. |
UseUrl | Menunjukkan bahwa aplikasi Anda dapat menerima URL (bukan nama file) pada baris perintah. Aplikasi yang dapat membuka dokumen langsung dari internet, seperti browser web dan pemutar media, harus mengatur entri ini. Ketika fungsi ShellExecuteEx memulai aplikasi dan nilai UseUrl=1 tidak diatur, ShellExecuteEx mengunduh dokumen ke file lokal dan memanggil handler pada salinan lokal. Misalnya, jika aplikasi memiliki set entri ini dan pengguna mengklik kanan pada file yang disimpan di server web, kata kerja Buka akan tersedia. Jika tidak, pengguna harus mengunduh file dan membuka salinan lokal. Entri UseUrl berjenis REG_DWORD , dan nilainya 0x1. Di Windows Vista dan yang lebih lama, entri ini menunjukkan bahwa URL harus diteruskan ke aplikasi bersama dengan nama file lokal, ketika dipanggil melalui ShellExecuteEx. Di Windows 7, ini menunjukkan bahwa aplikasi dapat memahami url http atau https apa pun yang diteruskan ke sana, tanpa harus memberikan nama file cache juga. Kunci registri ini dikaitkan dengan kunci SupportedProtocols . |
Menggunakan Subkunjud Aplikasi
Melalui penyertaan entri registri di bawah subkunciApplicationName.exeAplikasi\HKEY_CLASSES_ROOT\, aplikasi dapat memberikan informasi khusus aplikasi yang ditunjukkan dalam tabel berikut.
Entri registri | Deskripsi |
---|---|
shell\verb | Menyediakan metode kata kerja untuk memanggil aplikasi dari OpenWith. Tanpa definisi kata kerja yang ditentukan di sini, sistem mengasumsikan bahwa aplikasi mendukung CreateProcess, dan meneruskan nama file pada baris perintah. Fungsionalitas ini berlaku untuk semua metode kata kerja, termasuk DropTarget, ExecuteCommand, dan Dynamic Data Exchange (DDE). |
DefaultIcon | Memungkinkan aplikasi menyediakan ikon tertentu untuk mewakili aplikasi alih-alih ikon pertama yang disimpan dalam file .exe. |
FriendlyAppName | Menyediakan cara untuk mendapatkan nama yang dapat dilokalkan untuk ditampilkan untuk aplikasi, bukan hanya informasi versi yang muncul, yang mungkin tidak dapat dilokalkan. Kueri asosiasi ASSOCSTR membaca nilai entri registri ini dan kembali menggunakan nama FileDescription dalam informasi versi. Jika nama tersebut hilang, kueri asosiasi default ke nama tampilan file. Aplikasi harus menggunakan ASSOCSTR_FRIENDLYAPPNAME untuk mengambil informasi ini untuk mendapatkan perilaku yang tepat. |
SupportedTypes | Mencantumkan jenis file yang didukung aplikasi. Melakukannya memungkinkan aplikasi dicantumkan di menu kaskade kotak dialog Buka dengan . |
NoOpenWith | Menunjukkan bahwa tidak ada aplikasi yang ditentukan untuk membuka jenis file ini. Ketahuilah bahwa jika subkuntah OpenWithProgIDs telah ditetapkan untuk aplikasi berdasarkan jenis file, dan subkunjung ProgID itu sendiri tidak juga memiliki entri NoOpenWith, aplikasi tersebut akan muncul dalam daftar aplikasi yang direkomendasikan atau tersedia bahkan jika telah menentukan entri NoOpenWith. Untuk informasi selengkapnya, lihat Cara Menyertakan Aplikasi di Kotak Dialog Buka Dengan dan Cara mengecualikan Aplikasi dari Kotak Dialog Buka dengan. |
IsHostApp | Menunjukkan bahwa prosesnya adalah proses host, seperti Rundll32.exe atau Dllhost.exe, dan tidak boleh dipertimbangkan untuk penyematan atau penyematan menu Mulai dalam daftar Paling Sering Digunakan (MFU). Saat diluncurkan dengan pintasan yang berisi daftar argumen non-null atau ID Model Pengguna Aplikasi eksplisit (AppUserModelIDs), proses dapat disematkan (sebagai pintasan tersebut). Pintasan tersebut adalah kandidat untuk dimasukkan dalam daftar MFU. |
NoStartPage | Menunjukkan bahwa aplikasi yang dapat dieksekusi dan pintasan harus dikecualikan dari menu Mulai dan dari penyematan atau penyertaan dalam daftar MFU. Entri ini biasanya digunakan untuk mengecualikan alat sistem, alat penginstal dan pencabut instalan, dan file readme. |
UseExecutableForTaskbarGroupIcon | Menyebabkan taskbar menggunakan ikon default dari executable ini jika tidak ada pintasan yang dapat disematkan untuk aplikasi ini, dan bukan ikon jendela yang pertama kali ditemui. |
TaskbarGroupIcon | Menentukan ikon yang digunakan untuk mengambil alih ikon bilah tugas. Ikon jendela biasanya digunakan untuk taskbar. Mengatur entri TaskbarGroupIcon menyebabkan sistem menggunakan ikon dari .exe untuk aplikasi sebagai gantinya. |
Contoh
Beberapa contoh pendaftaran aplikasi melalui HKEY_CLASSES_ROOT\Applications\ApplicationName.exe subkey adalah sebagai berikut. Semua nilai entri registri berjenis REG_SZ , dengan pengecualian DefaultIcon yang berjenis REG_EXPAND_SZ .
HKEY_CLASSES_ROOT
Applications
wordpad.exe
FriendlyAppName = @%SystemRoot%\System32\shell32.dll,-22069
HKEY_CLASSES_ROOT
Applications
wmplayer.exe
SupportedTypes
.3gp2
HKEY_CLASSES_ROOT
Applications
wmplayer.exe
DefaultIcon
(Default) = %SystemRoot%\system32\wmploc.dll,-730
HKEY_CLASSES_ROOT
Applications
WScript.exe
NoOpenWith
HKEY_CLASSES_ROOT
Applications
photoviewer.dll
shell
open
DropTarget
Clsid = {FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}
HKEY_CLASSES_ROOT
Applications
mspaint.exe
SupportedTypes
.bmp
.dib
.rle
.jpg
.jpeg
.jpe
.jfif
.gif
.emf
.wmf
.tif
.tiff
.png
.ico
Mendaftarkan Kata Kerja dan Informasi Asosiasi File Lainnya
Subkunci yang terdaftar di bawah HKEY_CLASSES_ROOT\SystemFileAssociations memungkinkan Shell menentukan perilaku default atribut untuk jenis file dan mengaktifkan asosiasi file bersama. Ketika pengguna mengubah aplikasi default untuk jenis file, ProgID dari aplikasi default baru memiliki prioritas dalam menyediakan kata kerja dan informasi asosiasi lainnya. Prioritas ini disebabkan oleh entri pertama dalam array asosiasi. Jika program default diubah, informasi di bawah ProgID sebelumnya tidak lagi tersedia.
Untuk menangani konsekuensi dari perubahan program default secara proaktif, Anda dapat menggunakan HKEY_CLASSES_ROOT\SystemFileAssociations untuk mendaftarkan kata kerja dan informasi asosiasi lainnya. Karena lokasinya setelah ProgID dalam array asosiasi, pendaftaran ini lebih rendah prioritasnya. SystemFileAssociationsregistrations ini stabil bahkan ketika pengguna mengubah program default, dan menyediakan lokasi untuk mendaftarkan kata kerja sekunder yang akan selalu tersedia untuk jenis file tertentu. Untuk contoh registri, lihat Mendaftarkan Jenis yang Dirasakan nanti dalam topik ini.
Contoh registri berikut menunjukkan apa yang terjadi ketika pengguna menjalankan item Program Default di Panel Kontrol untuk mengubah default untuk file .mp3 ke App2ProgID. Setelah mengubah default, Verb1 tidak lagi tersedia, dan Verb2 menjadi default.
HKEY_CLASSES_ROOT
.mp3
(Default) = App1ProgID
HKEY_CLASSES_ROOT
App1ProgID
shell
Verb1
HKEY_CLASSES_ROOT
App2ProgID
shell
Verb2
Mendaftarkan Jenis yang Dirasakan
Nilai registri untuk jenis yang dirasakan didefinisikan sebagai subkunci dari subkunciregistri SystemFileAssociationsHKEY_CLASSES_ROOT\. Misalnya, teks jenis yang dirasakan terdaftar sebagai berikut:
HKEY_CLASSES_ROOT
SystemFileAssociations
text
shell
edit
command
(Default) = "%SystemRoot%\system32\NOTEPAD.EXE" "%1"
open
command
(Default) = "%SystemRoot%\system32\NOTEPAD.EXE" "%1"
Jenis yang dirasakan jenis file ditunjukkan dengan menyertakan nilai PerceivedType dalam subkunjuk tipe file. Nilai PerceivedType diatur ke nama jenis yang dirasakan terdaftar di bawah subkunciregistri SystemFileAssociationsHKEY_CLASSES_ROOT\, seperti yang ditunjukkan dalam contoh registri sebelumnya. Untuk mendeklarasikan file .cpp sebagai jenis "teks" yang dirasakan, misalnya, tambahkan entri registri berikut:
HKEY_CLASSES_ROOT
.cpp
PerceivedType = text