Wie ordne ich die Elemente im Explorer-Menü "Neu" in Windows 10 neu an?

476
Saud Iqbal

Wie verschiebe ich ein Element über die Trennlinie im Untermenü "Neu" des Kontextmenüs von Windows 10?

Gibt es etwas in der Registry, das gesetzt werden muss?

Rechtsklick Menü Beispiel

1

1 Antwort auf die Frage

1
Ben N

Erstellen Sie einen ConfigUnterschlüssel unter dem ShellNewSchlüssel Ihres Dateityps. Fügen Sie dann innerhalb dieses Unterschlüssels einen Zeichenfolgewert hinzu BeforeSeparator. Die Änderung sollte sofort wirksam werden:


Um das herauszufinden, musste ich in den Explorer-Code eintauchen. shell32.dllEnthält eine CNewMenuKlasse, die das Menü "Neu" darstellt, und hat eine benannte Funktion _BeforeSeparator, die bestimmt, ob der angegebene Eintrag vor dem Trennzeichen platziert werden soll. Hier ist der wichtige Teil der Demontage dieser Funktion (mit freundlicher Genehmigung von IDA ):

Erstens verwendet es, PathMatchSpecWum zu sehen, ob der Schlüssel Name eines ist .lnk, .library-msoder Folder. Wenn dies der Fall ist (roter / linker Pfad), wird das Element garantiert über der Linie angezeigt. Wenn nicht (grüner / rechter Pfad), prüft die Funktion, ob ein bestimmtes Bit ( 10h) in einem bestimmten Teil ( +8) der Datenstruktur gesetzt ist.

Ich musste den Code finden, der für das Setzen dieses Bits verantwortlich ist. Es gibt eine so genannte Funktion _GetNewObjectInfoForKey, die für das Einrichten der relevanten Datenstrukturen verantwortlich zu sein scheint. Hier ist ein Teil der Demontage fast am Anfang:

Es versucht einen aufgerufenen Unterschlüssel zu öffnen Configund setzt bei Erfolg (roter Pfad) _GetConfigFlagsden Teil der Datenstruktur, der das Bit enthält, an dem wir interessiert sind! _GetConfigFlagsprüft auf Vorhandensein verschiedener Einträge und setzt ggf. verschiedene Bits. Hier ist der Teil, der unser Zielbit ( 10h) setzt:

Und da sehen wir den gewünschten Eintrag Name: BeforeSeparator.

+1 für die Montage Registrierungsänderungen im Kontextmenü können mit dem Explorer-Neustart (ohne Neustart) angewendet werden. Biswapriyo vor 5 Jahren 0