Windows Gezgini'ne klasörler için bağlam menüsü öğesi nasıl eklenir [kapalı]


102

Kayıt defterine anahtarlar ekleyerek Windows Gezgini'nde dosyalara sağ tıklama bağlam menüsü öğelerini nasıl ekleyeceğimi öğrendim. Yani Explorer'da bir dosyaya sağ tıklayıp o dosyada özel bir uygulama çalıştırabilirim.

Bir klasör için aynısını yapmak istiyorum ve bunu yapmanın bir yolunu bulamadım (henüz). Özel bağlam menüsü işleyicileri oluşturma / yazma üzerine makaleler görüyorum, ancak oraya gitmek istemiyorum.

Burada , Gezgin'de Masaüstüne ve "Bilgisayar" a basamaklı bağlam menüsü öğelerinin nasıl ekleneceği hakkında bir makale buldum , ancak bu herhangi bir klasör için çalışmıyor.

Özel uygulamamı içerik menüsüne ekleyebilmek ve hem dosyalar hem de klasörler üzerinde çalışmasını sağlamak istiyorum. Bunu bir içerik menüsü işleyicisi yazmadan yapmanın bir yolu var mı?


Çözümü, dosyalar ve klasörler için kayıt defteri aracılığıyla nasıl yapılacağını açıklayan aşağıdaki makalede buldum:

Aşağıdaki iki makale ek bilgi ve seçenekler sağladı:


1
Bu soru 6 yıldır açık mı ?! Altı gün önce kim kapattı?
Andrew

StackOverflow hakkında sevmediğim TEK şey, palyaçoların soruları kapatması veya soruları konu dışı olarak işaretlemesi.
Michael

Yanıtlar:


218

Kayıt düzenleyicide ( regedit.exe) şunu bulun:

  • Windows Gezgini'nin sol panelindeki klasörlere veya sağ paneldeki bir dizinin arka planına sağ tıklamak için bağlam menüsü :

    1. HKEY_CLASSES_ROOT\Directory\Background\shell eğer yöneticiyseniz
    2. HKEY_CURRENT_USER\Software\Classes\directory\Background\shell eğer normal bir kullanıcıysan
  • Windows Gezgini'nin sağ panelindeki klasörlere sağ tıklamak için bağlam menüsü :

    1. HKEY_CLASSES_ROOT\Directory\shell eğer yöneticiyseniz
    2. HKEY_CURRENT_USER\Software\Classes\directory\shell eğer normal bir kullanıcıysan
  • Herhangi bir dosya için bağlam menüsü:

    1. HKEY_CLASSES_ROOT\*\shell eğer yöneticiyseniz
    2. HKEY_CURRENT_USER\Software\Classes\*\shell eğer normal bir kullanıcıysan

Her durumda:

  1. shellbağlam menüsü öğesini adlandırmak istediğiniz şekilde adlandırarak altına yeni bir anahtar ekleyin
  2. command(zorunlu ad) adlı bu anahtarın içine yeni bir anahtar ekleyin
  3. düzenlemek defaultözellik commandiçin myprogrampath\path\path\executable.exe %1özel programına seçilen dosyanın dosya yolunu ve adını geçirmek için

Daha fazla özelleştirme:

  • Simge ekle : iconbir simge kaynak yolu ile eşleşen değerle 1. adımda oluşturulan anahtar için adlandırılmış bir dize değeri ekleyin . Hangi simgenin kullanılacağını belirtmek için bir tamsayı bağımsız değişkenleri de sağlayabilirsiniz. Misal:%SystemRoot%\System32\shell32.dll,3
  • Yalnızca vardiya-tıklandığında görüntüle : Extended1. adımda oluşturulan anahtar için adlandırılan boş bir dize değeri ekler
  • Menü giriş etiketini özelleştirin : 1. adımda oluşturulan anahtar için varsayılan değerin değerini değiştirin
  • Değişim menü giriş yeri : adlı bir dize değeri ekleyin Positionbiriyle: Top,Bottom

2
HKEY_CLASSES_ROOT\Directory\Background\shellyalnızca bir dizinin arka planına sağ tıklamayı etkileyebilir
Amos

23
Yolda "%1"boşluk olması durumunda olmalı .
Blrp

1
Bunların ne zaman yürürlüğe girmesi gerekiyor? Yeniden başlatma gerektiriyorlar mı?
Michael

4
hemen. Yeni bir gezgin penceresi açmanıza bile gerek yok: sağ tıkladığınız anda yeni ayarlar yüklenir.
jumpjack

15
Benim önceki yorum ilgili olarak: Sorun değiştirerek düzeltilebilir %1tarafından %V.
Michael Herrmann

10

Geri döndüm ve bunu başka bir konuda da cevapladım çünkü bu soruda özellikle fazla bir şey yok gibi görünüyor.

En basit yolun "AppliesTo" adlı anahtara bir Dize Değeri eklemek ve değerini "under: {yol}" olarak ayarlamak olduğunu buldum

Örneğimde, sadece T Sürücüsüne bakmasını istiyorum, bu nedenle String değerim "AppliesTo": "under: T:".

C # 'da bu, aşağıdakilerle kolayca gerçekleştirilir:

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();

2
Bunu C # aracılığıyla yapmak için örnek kod sağladığınız için teşekkür ederiz. Bunu bir uygulamadan hızlı bir şekilde yapmak isteyen herkes için küçük bir yardım.
Ayo I

2
Ne yazık ki, "AppliesTo" değerinin "Dizin \ Arka Plan" girişi üzerinde herhangi bir etkisi yok gibi görünüyor. Bir klasörün arka planına sağ tıklandığında ne kadar benzer bir sınırlama yapılabileceğini bilen var mı?
cl0rkster

6

Daha temiz, daha kolay ve daha hızlı bir çözüm bulundu: bir metin dosyası oluşturun, bu içerikle doldurun, ihtiyaçlarınıza göre güncelleyin, .reg sonekiyle kaydedin ve başlatın (kayıt defterinin kullanıcı bölümüne eriştiği için yönetici ayrıcalıklarına ihtiyaç duymaz. ):

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"

Bu şekilde, yapılandırmanızın bir yedeğini de alabilirsiniz: .reg dosyasını güvenli bir yere kaydetmeniz yeterlidir. Dosyayı başlattıktan sonra kayıt defterini manuel olarak düzenlerseniz, sağ tıklayın ve "dışa aktar" seçeneğini seçin.

Yoldaki çift geri boşluklara dikkat edin: \\


1

Gerçekten işe yaradığını bulduğum tek iyi çözüm: /superuser/1097054/shell-context-menu-registry-extension-doesnt-work-when-default-program-is-other

HKEY_CLASSES_ROOT \ SystemFileAssociations \ your.extension \ shell \ command içine anahtarlar ekleyin Yapmak istediğiniz komutla son anahtarı değiştirin.

Amacım için:

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

Dosyayı dışa aktarırsam bir .reg alıyorum:

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\""

1

Komut istemini açın [yönetici olarak çalıştırın] ve bu komutu yürütün

reg add "HKEY_CLASSES_ROOT\Directory\shell\Refi2\command" /d "powershell.exe -noexit -command Set-Location -literalPath '%V'"
  • -d: [uygulama adı exe] çalıştırılacak değer.
  • -v: komut anahtarının içinde yeni bir alt anahtar oluşturur.
  • -f: zaten varsa anahtarı zorla geçersiz kılmak için.
  • powershell.exe -noexit -command Set-Location -literalPath '% V' yerine bu size yolunu belirtebilirsiniz senin exe .

Daha fazla özellik hakkında daha fazla ayrıntı için şunu çalıştırın: -

reg add /?
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.