Bagaimana menambahkan item menu konteks ke Windows Explorer untuk folder [ditutup]

100

Saya telah menemukan cara menambahkan item menu konteks klik kanan ke file di Windows Explorer, dengan menambahkan kunci ke registri. Yaitu saya dapat mengklik kanan pada file di Explorer dan menjalankan aplikasi kustom terhadap file itu.

Saya ingin melakukan hal yang sama untuk folder dan belum menemukan cara untuk melakukannya (belum). Saya melihat artikel tentang membuat / menulis penangan menu konteks khusus, tetapi saya lebih suka tidak pergi ke sana.

Saya telah menemukan artikel di sini tentang cara menambahkan item menu konteks berjenjang ke Desktop dan ke "Komputer" di Explorer, tetapi ini tidak berfungsi untuk folder mana pun.

Saya ingin menambahkan aplikasi kustom saya ke menu konteks dan membuatnya berfungsi pada file dan folder. Apakah ada cara untuk melakukan ini tanpa menulis penangan menu konteks?


Saya menemukan solusinya dalam artikel di bawah ini, yang menjelaskan cara melakukan ini melalui registri untuk file, serta untuk folder:

Dua artikel berikut memberikan info dan opsi tambahan:

Elan
sumber
1
Pertanyaan ini sudah dibuka selama 6 tahun ?! Siapa yang menutupnya enam hari lalu?
Andrew
HANYA hal yang saya tidak suka tentang StackOverflow adalah pertanyaan penutup badut atau menandai pertanyaan sebagai di luar topik.
Michael

Jawaban:

209

Di editor registrasi ( regedit.exe) temukan:

  • Menu konteks untuk klik kanan pada folder di panel kiri Windows Explorer atau di latar belakang direktori di panel kanan:

    1. HKEY_CLASSES_ROOT\Directory\Background\shell jika Anda adalah administrator
    2. HKEY_CURRENT_USER\Software\Classes\directory\Background\shell jika Anda adalah pengguna biasa
  • Menu konteks untuk klik kanan pada folder di panel kanan Windows Explorer:

    1. HKEY_CLASSES_ROOT\Directory\shell jika Anda adalah administrator
    2. HKEY_CURRENT_USER\Software\Classes\directory\shell jika Anda adalah pengguna biasa
  • Menu konteks untuk file apa pun:

    1. HKEY_CLASSES_ROOT\*\shell jika Anda adalah administrator
    2. HKEY_CURRENT_USER\Software\Classes\*\shell jika Anda adalah pengguna biasa

Dalam semua kasus:

  1. tambahkan kunci baru di bawah shell, beri nama sesuai keinginan Anda untuk menamai item menu konteks
  2. tambahkan kunci baru di dalam kunci ini, bernama command(nama wajib)
  3. edit defaultproperti di commanduntuk myprogrampath\path\path\executable.exe %1meneruskan jalur file dan nama file yang dipilih ke program kustom Anda

Lebih banyak kustomisasi:

  • Tambahkan ikon : tambahkan nilai string yang diberi nama iconuntuk kunci yang dibuat pada langkah 1 dengan nilai yang cocok dengan jalur sumber daya ikon. Anda juga dapat memberikan argumen integer untuk menentukan ikon mana yang akan digunakan. Contoh:%SystemRoot%\System32\shell32.dll,3
  • Tampilkan hanya pada shift-click : menambahkan nilai string kosong bernama Extendeduntuk kunci yang dibuat pada langkah 1
  • Customize label menu entri : mengubah nilai dari nilai default untuk kunci dibuat pada langkah 1
  • Perubahan menu entri lokasi : menambahkan nilai string bernama Positiondengan satu dari: Top,Bottom
jumpjack
sumber
2
HKEY_CLASSES_ROOT\Directory\Background\shellhanya dapat mempengaruhi klik kanan pada latar belakang direktori
Amos
21
Harus "%1"dalam kasus jalur memiliki spasi.
Blrp
3
segera. Bahkan tidak perlu membuka jendela penjelajah baru: pengaturan baru dimuat segera setelah Anda mengklik kanan.
jumpjack
1
Tampaknya variabel lingkungan tidak berfungsi Command, bukan?
Jack Lu
14
Mengenai komentar saya sebelumnya: Masalahnya bisa diperbaiki dengan mengganti %1dengan %V.
Michael Herrmann
10

Saya kembali dan menjawab ini di topik lain karena tampaknya tidak banyak yang membahas pertanyaan ini secara spesifik.

Saya menemukan cara paling sederhana adalah menambahkan Nilai String ke kunci yang disebut "AppliesTo" dan menetapkan nilainya ke "di bawah: {path}"

Dalam contoh saya, saya ingin itu hanya terlihat di Drive T, jadi nilai String saya adalah "AppliesTo": "di bawah: T:".

Di C #, ini mudah dicapai dengan yang berikut:

RegistryKey _key = Registry.ClassesRoot.OpenSubKey("Folder\\Shell", true);
RegistryKey newkey = _key.CreateSubKey("My Menu Item");
newkey.SetValue("AppliesTo", "under:T:");

RegistryKey subNewkey = newkey.CreateSubKey("Command");
subNewkey.SetValue("", "C:\\yourApplication.exe");
subNewkey.Close();

newkey.Close();
_key.Close();
Bobby Byrnes
sumber
2
Terima kasih telah memberikan kode contoh untuk melakukan ini melalui C #. Ini sedikit bantuan bagi siapa saja yang ingin melakukan ini dengan cepat dari aplikasi.
Ayo I
2
Sayangnya, nilai "AppliesTo" tampaknya tidak berpengaruh pada entri "Directory \ Background". Adakah yang tahu bagaimana pembatasan serupa dapat dilakukan untuk mengklik kanan pada latar belakang folder?
cl0rkster
6

Menemukan solusi yang lebih bersih, lebih mudah, dan lebih cepat: buat file teks, isi dengan konten ini, perbarui sesuai kebutuhan Anda, simpan dengan akhiran .reg dan luncurkan (tidak memerlukan hak administrator karena mengakses bagian pengguna dari registri ):

Windows Registry Editor Version 5.00

; Setup context menu item for click on right panel:
[HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\MenuItemNameBackground\command]
@="C:\\yourpath\\executable.exe \"%1\""

; Optional: specify an icon for the item:   
; HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\MenuItemNameBackground]
;"icon"="C:\\yourpath\\appicon.ico"

; Optional: specify a position in the menu
; HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\MenuItemNameBackground]
;"position"="Bottom"

; -------------------------------------------------------------------------------------

; Setup context menu item for click on folders tree item:
[HKEY_CURRENT_USER\Software\Classes\directory\shell\MenuItemNamePanel\command]
@="C:\\yourpath\\executable.exe \"%1\""

; Optional: specify an icon for the item:   
; [HKEY_CURRENT_USER\Software\Classes\directory\shell\MenuItemNamePanel]
;"icon"="C:\\yourpath\\appicon.ico"

; Optional: specify a position in the menu
; [HKEY_CURRENT_USER\Software\Classes\directory\shell\MenuItemNamePanel]
;"position"="Top"

Dengan cara ini Anda juga dapat memiliki cadangan konfigurasi Anda: simpan saja file .reg di tempat yang aman. Jika Anda mengedit registri secara manual setelah meluncurkan file, klik kanan dan pilih "ekspor".

Waspadalah terhadap ruang belakang ganda di jalur: \\

jumpjack
sumber
1

Satu-satunya solusi bagus yang menurut saya benar-benar berfungsi adalah: /superuser/1097054/shell-context-menu-registry-extension-doesnt-work-when-default-program-is-other

Tambahkan kunci di HKEY_CLASSES_ROOT \ SystemFileAssociations \ your.extension \ shell \ command Ubah kunci terakhir dengan perintah yang ingin Anda lakukan.

Untuk tujuan saya itu adalah:

"C:\Program Files (x86)\GPSBabel\gpsbabel.exe" -r -i gpx -f "%1" -x simplify,count=1000 -o gpx -F "%1.gpx"

Jika saya mengekspornya, saya mendapatkan .reg:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\SystemFileAssociations\.gpx\shell\Simplify gpx\command]
@="\"C:\\Program Files (x86)\\GPSBabel\\gpsbabel.exe\" -r -i gpx -f \"%1\" -x simplify,count=1000 -o gpx -F \"%1.gpx\""
Dorian Grv
sumber
1

Buka command prompt [jalankan sebagai administrator] dan jalankan perintah ini

reg add "HKEY_CLASSES_ROOT\Directory\shell\Refi2\command" /d "powershell.exe -noexit -command Set-Location -literalPath '%V'"
  • -d: nilai untuk dieksekusi [nama aplikasi exe].
  • -v: membuat subkunci baru di dalam kunci perintah.
  • -f: untuk mengganti kunci secara paksa jika sudah ada.
  • PowerShell.exe -noexit -command Set-Location -literalPath '% V' alih-alih ini, Anda dapat menentukan jalur exe Anda .

Untuk detail lebih lanjut tentang lebih banyak fitur, jalankan: -

reg add /?
Sahil Shikalgar
sumber