Ich möchte „Auf OneDrive verschieben“ nicht entfernen, sondern nur die Eselsbrücke M, die die Eselsbrücke für „Umbenennen“ trollt.
Die Mnemonik anderer Kontextelemente kann geändert werden, indem die Stelle im Registrierungsschlüssel bearbeitet wird, an der sich das Et-Zeichen befindet und der den Kontexteintrag einrichtet. Bei einer Registrierungssuche konnte ich jedoch keinen Schlüssel mit diesem Text finden und alle Tipps zu Onedrive im Kontextmenü scheinen nur die Programm-ID-Nummer zu enthalten.
(Dies führt dazu, dass Dateien versehentlich auf OneDrive verschoben werden, wenn ich sie umbenennen möchte. Es ist äußerst ärgerlich, die Datei erst suchen und wieder zurück verschieben zu müssen.)
Antwort1
Ich habe den Registrierungsschlüssel gefunden, der Move to OneDrive
zum Kontextmenü für Dateielemente hinzugefügt wird:
HKEY_CURRENT_USER\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\ FileSyncEx
mit dem Standardwert:
{CB3D0F55-BC2C-4C1A-85ED-23ED75B5106B}
Da der Menütext fest codiert ist .dll
, kann er nicht geändert werden.
Um das gewünschte Verhalten zu erreichen, deaktivieren Sie die „integrierte Funktion“, Move to OneDrive
indem Sie die (Default)
Daten des obigen Schlüssels bearbeiten und beliebige Zeichen voranstellen. Ich verwende:
XXX {CB3D0F55-BC2C-4C1A-85ED-23ED75B5106B}
und erstellen Sie es dann über ein benutzerdefiniertes Kontextmenüelement mit einer anderen Mnemonik neu. Speichern Sie Folgendes als .reg
Datei und führen Sie es zusammen.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\MoveToOneDrive]
@="Move to OneDrive"
"Icon"=hex(2):25,00,4c,00,6f,00,63,00,61,00,6c,00,41,00,70,00,70,00,44,00,61,\
00,74,00,61,00,25,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,\
74,00,5c,00,4f,00,6e,00,65,00,44,00,72,00,69,00,76,00,65,00,5c,00,4f,00,6e,\
00,65,00,44,00,72,00,69,00,76,00,65,00,2e,00,65,00,78,00,65,00,2c,00,30,00,\
00,00
; Icon=%LocalAppData%\Microsoft\OneDrive\OneDrive.exe,0
; pure com objects
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\MoveToOneDrive\Command]
@="PowerShell.exe -WindowStyle Hidden -Command \"gi -LiteralPath '%1' | sv 'File' ; ($comFolder = ($shell = New-Object -com shell.application).NameSpace('shell:OneDrive')).MoveHere($file.FullName) ; $comFolder.Self.InvokeVerb() ; (@($shell.windows()).Where({$_.LocationName -eq $comFolder.Title}))[0].Document.SelectItem($comFolder.ParseName($File.Name),17)\""
; String construction
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\MoveToOneDrive\xxCommand]
@="PowerShell.exe -WindowStyle Hidden -Command \"($comFolder = $shell.NameSpace('shell:OneDrive')).MoveHere('%1') ; Invoke-Expression ('explorer /select,{0}{1}{0}' -f [char]34 , ( Join-Path $comFolder.Self.Path ( '%1'.Split('\\')[-1] )))\""
; First draft
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\MoveToOneDrive\xCommand]
@="PowerShell.exe -WindowStyle Hidden -Command \"($comFolder = (New-Object -com shell.application).NameSpace('shell:OneDrive')).MoveHere('%1') ; $comFolder.Self.InvokeVerb()\""
Sie erhalten den blauen Blitz desPower ShellFenster, das manche stört und durch einen Trick beseitigt werden kann, den ich nie mache. Der blaue Blitz zeigt an, dass es funktioniert! :D
Nicht ganz so intelligent wie die integrierte Version, da dies für Dateien angezeigt wird, die sich bereits in der OneDrive
Hierarchie befinden, aber für einen aufmerksamen Benutzer ist das kein großes Problem.