So fügen Sie dem Windows Explorer ein Kontextmenüelement für Ordner hinzu [geschlossen]

100

Ich habe herausgefunden, wie man Dateien im Windows Explorer Kontextmenüelemente mit der rechten Maustaste hinzufügt, indem man der Registrierung Schlüssel hinzufügt. Das heißt, ich kann mit der rechten Maustaste auf eine Datei im Explorer klicken und eine benutzerdefinierte App für diese Datei ausführen.

Ich möchte dasselbe für einen Ordner tun und habe (noch) keinen Weg gefunden, dies zu tun. Ich sehe Artikel zum Erstellen / Schreiben von benutzerdefinierten Kontextmenü-Handlern, aber ich würde lieber nicht dorthin gehen.

Ich habe hier einen Artikel darüber gefunden, wie man kaskadierende Kontextmenüelemente zum Desktop und zum "Computer" im Explorer hinzufügt, aber dies funktioniert für keinen Ordner.

Ich möchte meine benutzerdefinierte App zum Kontextmenü hinzufügen und sie sowohl für Dateien als auch für Ordner verwenden können. Gibt es eine Möglichkeit, dies zu tun, ohne einen Kontextmenü-Handler zu schreiben?


Die Lösung habe ich im folgenden Artikel gefunden, in dem beschrieben wird, wie dies über die Registrierung für Dateien sowie für Ordner erfolgt:

Die folgenden zwei Artikel enthielten zusätzliche Informationen und Optionen:

Elan
quelle
1
Diese Frage ist seit 6 Jahren offen?! Wer hat es vor sechs Tagen geschlossen?
Andrew
Das EINZIGE, was ich an StackOverflow nicht mag, sind die Clowns, die Fragen schließen oder Fragen als nicht zum Thema gehörend markieren.
Michael

Antworten:

207

Im Registrierungseditor ( regedit.exe) finden Sie:

  • Kontextmenü für Rechtsklick auf Ordner im linken Bereich des Windows Explorers oder auf den Hintergrund eines Verzeichnisses im rechten Bereich:

    1. HKEY_CLASSES_ROOT\Directory\Background\shell Wenn Sie Administrator sind
    2. HKEY_CURRENT_USER\Software\Classes\directory\Background\shell wenn Sie ein normaler Benutzer sind
  • Kontextmenü für Rechtsklick auf Ordner im rechten Bereich des Windows Explorers:

    1. HKEY_CLASSES_ROOT\Directory\shell Wenn Sie Administrator sind
    2. HKEY_CURRENT_USER\Software\Classes\directory\shell wenn Sie ein normaler Benutzer sind
  • Kontextmenü für jede Datei:

    1. HKEY_CLASSES_ROOT\*\shell Wenn Sie Administrator sind
    2. HKEY_CURRENT_USER\Software\Classes\*\shell wenn Sie ein normaler Benutzer sind

Auf alle Fälle:

  1. Fügen Sie unter einen neuen Schlüssel hinzu shellund benennen Sie ihn so, wie Sie den Kontextmenüpunkt benennen möchten
  2. Fügen Sie in diesen Schlüssel einen neuen Schlüssel mit dem Namen command(obligatorischer Name) ein.
  3. Bearbeiten Sie die defaultEigenschaft in command, myprogrampath\path\path\executable.exe %1um den Dateipfad und den Namen der ausgewählten Datei an Ihr benutzerdefiniertes Programm zu übergeben

Weitere Anpassungen:

  • Symbol hinzufügen: Fügen Sie einen Zeichenfolgenwert hinzu, der iconfür den in Schritt 1 erstellten Schlüssel benannt ist und dessen Wert einem Symbolressourcenpfad entspricht. Sie können auch ganzzahlige Argumente angeben, um anzugeben, welches Symbol verwendet werden soll. Beispiel:%SystemRoot%\System32\shell32.dll,3
  • NurExtended bei gedrückter Umschalttaste anzeigen : Fügt einen leeren Zeichenfolgenwert hinzu, der nach dem in Schritt 1 erstellten Schlüssel benannt ist
  • Menüeintragsbezeichnung anpassen : Ändern Sie den Wert des Standardwerts für den in Schritt 1 erstellten Schlüssel
  • Position des Menüeintrags ändern : Fügen Sie einen Zeichenfolgenwert mit dem Namen Position: Top, hinzu.Bottom
Jumpjack
quelle
2
HKEY_CLASSES_ROOT\Directory\Background\shellkann nur Rechtsklick auf den Hintergrund eines Verzeichnisses beeinflussen
Amos
20
Sollte für den "%1"Fall sein, dass der Pfad Leerzeichen enthält.
Blrp
3
sofort. Es muss nicht einmal ein neues Explorer-Fenster geöffnet werden: Neue Einstellungen werden geladen, sobald Sie mit der rechten Maustaste klicken.
Jumpjack
1
Anscheinend funktionieren Umgebungsvariablen nicht Command, oder?
Jack Lu
14
Zu meinem vorherigen Kommentar: Das Problem kann durch Ersetzen %1durch behoben werden %V.
Michael Herrmann
10

Ich ging zurück und beantwortete dies auch in einem anderen Thema, da es zu dieser Frage nicht viel zu geben scheint.

Ich fand es am einfachsten, dem Schlüssel "AppliesTo" einen String-Wert hinzuzufügen und seinen Wert auf "under: {path}" zu setzen.

In meinem Beispiel soll es nur im T-Laufwerk angezeigt werden, daher lautet mein String-Wert "AppliesTo": "under: T:".

In C # ist dies leicht mit folgendem zu erreichen:

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
quelle
2
Vielen Dank, dass Sie dafür Beispielcode über C # bereitgestellt haben. Es ist eine kleine Hilfe für alle, die dies schnell über eine App erledigen möchten.
Ayo I
2
Leider scheint der Wert "AppliesTo" keine Auswirkung auf einen Eintrag "Directory \ Background" zu haben. Weiß jemand, wie eine ähnliche Einschränkung erreicht werden kann, wenn Sie mit der rechten Maustaste auf den Hintergrund eines Ordners klicken?
Cl0rkster
6

Eine sauberere, einfachere und schnellere Lösung gefunden: Erstellen Sie eine Textdatei, füllen Sie sie mit diesen Inhalten, aktualisieren Sie sie nach Ihren Wünschen, speichern Sie sie mit dem Suffix .reg und starten Sie sie (es sind keine Administratorrechte erforderlich, da auf den Benutzerteil der Registrierung zugegriffen wird ):

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"

Auf diese Weise können Sie auch eine Sicherungskopie Ihrer Konfiguration erstellen: Speichern Sie die REG-Datei einfach an einem sicheren Ort. Wenn Sie die Registrierung nach dem Starten der Datei manuell bearbeiten, klicken Sie mit der rechten Maustaste und wählen Sie "Exportieren".

Achten Sie auf doppelte Backspaces im Pfad: \\

Jumpjack
quelle
1

Die einzig gute Lösung, die ich wirklich gefunden habe, ist: /superuser/1097054/shell-context-menu-registry-extension-doesnt-work-when-default-program-is-other

Hinzufügen von Schlüsseln in HKEY_CLASSES_ROOT \ SystemFileAssociations \ your.extension \ shell \ command Ändern Sie den letzten Schlüssel mit dem Befehl, den Sie ausführen möchten .

Für meinen Zweck war es:

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

Wenn ich es exportiere, bekomme ich eine .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
quelle
0

Öffnen Sie die Eingabeaufforderung [als Administrator ausführen] und führen Sie diesen Befehl aus

reg add "HKEY_CLASSES_ROOT\Directory\shell\Refi2\command" /d "powershell.exe -noexit -command Set-Location -literalPath '%V'"
  • -d: Wert, der ausgeführt werden soll [App-Name exe].
  • -v: Erstellt einen neuen Unterschlüssel in der Befehlstaste.
  • -f: um den Schlüssel zwangsweise zu überschreiben, falls er bereits vorhanden ist.
  • Powershell.exe -noexit -Befehl Set-Location -literalPath '% V' Stattdessen können Sie den Pfad Ihrer Exe angeben .

Weitere Informationen zu weiteren Funktionen finden Sie unter: -

reg add /?
Sahil Shikalgar
quelle