Windows Context Menu erweitern?

... komplette Frage anzeigen

2 Antworten

Das dürfte den gestellten Anforderungen entsprechen:

public static void RegisterFileType(string extensionName, string actionName, string commandValue, bool allUsers){
Microsoft.Win32.RegistryKey rootKey;
if(allUsers){
rootKey = Microsoft.Win32.RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.ClassesRoot, Microsoft.Win32.RegistryView.Default);
}
else{
rootKey = Microsoft.Win32.RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.CurrentUser, Microsoft.Win32.RegistryView.Default);
}
Microsoft.Win32.RegistryKey extensionKey = rootKey.OpenSubKey((!allUsers?"classes\\\\":"")+extensionName);
if(extensionKey == null){
extensionKey = rootKey.CreateSubKey((!allUsers?"classes\\\\":"")+extensionName);
}
string defaultHandlerName = System.Convert.ToString(extensionKey.GetValue(""));
if(string.IsNullOrEmpty(defaultHandlerName)){
defaultHandlerName = "default" + extensionName;
}
Microsoft.Win32.RegistryKey defaultHandlerKey = rootKey.OpenSubKey((!allUsers?"classes\\\\":"")+defaultHandlerName);
if(defaultHandlerKey == null){
defaultHandlerKey = rootKey.CreateSubKey((!allUsers?"classes\\\\":"")+defaultHandlerName);
}
Microsoft.Win32.RegistryKey actionKey = defaultHandlerKey.OpenSubKey("shell\\\\"+actionName);
if(actionKey == null){
actionKey = defaultHandlerKey.CreateSubKey("shell\\\\"+actionName);
}
actionKey.SetValue("", actionName);
Microsoft.Win32.RegistryKey commandKey = actionKey.OpenSubKey("command");
if(commandKey == null){
commandKey = actionKey.CreateSubKey("command");
}
commandKey.SetValue("", commandValue);
commandKey.Close();
actionKey.Close();
defaultHandlerKey.Close();
extensionKey.Close();
rootKey.Close();
}

Verwendungsbeispiel:

RegisterFileType(".txt", "Bearbeiten mit JaskiHaxEditor", "C:\\\\WoAuchImmerSichdasProgrammBefindet\\\\JaskiHaxEditor.exe \\"%1\\" edit", true);

Zu den Parametern:

1. Die Dateinamenerweiterung inklusive Punkt

2. Die Bezeichnung des Kontextmenüeintrages

3. Der dem Kontextmenüeintrag zuzuordnende Befehl

4. Mit [true] wird der Eintrag für alle Benutzer erstellt (ggf. Administratorberechtigungen nötig), mit [false] nur für denjenigen, der das Programm gerade ausführt.

P.S.: Bei Bedarf, könnt ich die Funktion auch noch dahingehend erweitern, dass auf das Standardsymbol für den Dateityp angepasst werden kann.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von JaskiHax
08.11.2016, 07:16

Vielen Dank dafür, bin sehr gespannt ob es funktionieren wird 👍✔😊

0
Kommentar von JaskiHax
03.01.2017, 17:27

Also nein, auch nach einem Neustart funktioniert es nicht.

0

Das musst du gar nicht programmieren, das kannst du einfach in die Registry eintragen:

http://www.pqtuning.de/registry/windows-7/kontextmenue-anpassen-erweitern.html (hier die Parameter eintragen; Name sollte "%0" sein, evtl. geht es auch automatisch)

http://www.winfaq.de/faq_html/Content/tip1500/onlinefaq.php?h=tip1767.htm

Die beiden Seiten sollten reichen, ansonsten kannst du ja selbst noch ein bisschen suchen ...

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von JaskiHax
12.10.2016, 18:36

Vielen Dank, ich möchte das aber automatisch vom Programm machen lassen, da das andere ja auch tun und nicht jeder der sich das Programm runter laden würde das manuell in der Regestry macht. JaskiHax

0
Kommentar von JaskiHax
25.10.2016, 19:49

Okay danke. Ich schaue mal rein.

0

Was möchtest Du wissen?