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:

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\SOFTWAREMicrosoft\\Windows\CurrentVersionApp\Paths

Mendaftarkan Aplikasi

Subkunjud registri Jalur Aplikasi dan Aplikasi digunakan untuk mendaftar dan mengontrol perilaku sistem atas nama aplikasi. Subkunjud Jalur Aplikasi adalah lokasi yang disukai .

Menggunakan Subkunjud Jalur Aplikasi

Dalam Windows 7 dan yang lebih baru, kami sangat menyarankan Anda menginstal aplikasi per pengguna daripada per mesin. Aplikasi yang diinstal untuk per pengguna dapat didaftarkan di HKEY_CURRENT_USER\SoftwareMicrosoft\\Windows\CurrentVersionApp\Paths. Aplikasi yang diinstal untuk semua pengguna komputer dapat didaftarkan di HKEY_LOCAL_MACHINE\SoftwareMicrosoft\\ Windows \CurrentVersionApp\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 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:

  1. 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
    
  2. Lihat tabel berikut untuk detail entri subkunci Jalur Aplikasi .

Entri registri Detail
(Default) Adalah jalur yang sepenuhnya memenuhi syarat untuk 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. Dalam Windows 7 dan yang lebih baru, tipe dapat 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. Dalam Windows 7, ini menunjukkan bahwa aplikasi dapat memahami url http atau https apa pun yang diteruskan ke sana, tanpa harus menyediakan nama file cache juga. Kunci registri ini dikaitkan dengan kunci SupportedProtocols .

Menggunakan Subkunjud Aplikasi

Melalui penyertaan entri registri di bawah subkunci ApplicationName.exeHKEY_CLASSES_ROOT\Applications\, 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 alih-alih 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 meskipun telah menentukan entri NoOpenWith. Untuk informasi selengkapnya, lihat Cara Menyertakan Aplikasi dalam 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, 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 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 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 pada 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 menjadi prioritas yang lebih rendah. 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 subkunci registri HKEY_CLASSES_ROOT\SystemFileAssociations. 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 subkunjud jenis file. Nilai PerceivedType diatur ke nama jenis yang dirasakan yang terdaftar di bawah subkunci registri HKEY_CLASSES_ROOT\SystemFileAssociations, 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

Jenis File

Cara Kerja Asosiasi File

Tampilan Isi Menurut Tipe File atau Jenis

Pemverifikasi Tipe File

Penangan Tipe File

Pengidentifikasi Terprogram

Jenis yang Dirasakan

Array Asosiasi