Starten Sie ein Batch-Skript als Shell statt als Explorer in Windows 10

Starten Sie ein Batch-Skript als Shell statt als Explorer in Windows 10

In Windows 10 ist die Standard-Shell explorer.exe, die Ihnen die Taskleiste, Desktopsymbole und das Startmenü bietet.

Seit Windows 10 v1909 und möglicherweise v1903 hat Microsoft beschlossen, die Hyper-Taste ( CTRL- ALT- SHIFT- WIN) plus einige Tasten als Standardtaste für Office-Anwendungen zu verwenden, ohne dass Benutzer, die Office nicht installiert haben, diese Tasten nach Belieben verwenden können.

Ich hatte diese Tasten an Aktionen in verschiedenen Programmen gebunden, aber jetzt öffnet jede dieser Tasten eine Seite in meinem Webbrowser, die zu Office 365 navigiert, das ich nicht verwende, oder gibt mir im Fall von O für OneDrive eine Fehlermeldung aus, weil ich OneDrive nicht installiert habe.

Es sollte die Möglichkeit geben, mithilfe einer Registrierungsoptimierung dafür zu sorgen, dass beim Drücken der Taste nichts geöffnet wird. In Windows 10 v1909 funktioniert das jedoch nicht mehr.

Ich muss dieses Verhalten loswerden, also habe ich ein wenig recherchiert:

Es scheint, dass Microsoft diese Unterstützung direkt in integriert hat explorer.exe; ich kann töten explorer.exeund die Hotkeys sind endlich weg, aber wenn ich starte explorer.exe, sind sie wieder da.

Es scheint, dass diese Tasten beim Start explorer.exeeinmal registriert werden und der Explorer es nicht noch einmal versucht, wenn die Registrierung der Tasten fehlschlägt. Das bedeutet im Wesentlichen, dass ich den Explorer beenden, die Apps, die diese Hotkeys verwenden, neu starten und dann den Explorer starten muss, um meine Hotkeys zurückzubekommen. Es ist sogar möglich, den Explorer zu beenden, eine App zu starten, die alle Office-Hotkeys registriert, den Explorer zu starten, dann die Registrierung der Office-Hotkeys aufzuheben und sie sind von diesem Moment an völlig frei.

Da ich nur ein Programm habe, das alle diese globalen Hotkeys verwendet, muss ich dieses Programm nur starten, bevor ich den Explorer starte, und alles ist gut.

Ich könnte natürlich ein Skript ausführen, das den Explorer beendet, mein Programm startet und dann den Explorer startet, aber da dies sowieso beim Systemstart ausgeführt wird, kann das Flashen des Explorers vermieden werden, wenn ich mein Startskript anstelle des Explorers starten kann, was durch das Festlegen einer alternativen Shell möglich ist. Meines Wissens .exekönnen jedoch nur Dateien als Shell festgelegt werden.

Weiß jemand, wie ich eine .cmdDatei (oder eine andere Skriptsprache) als Shell festlegen kann, oder kennt jemand alternativ eine saubere Möglichkeit, mein globales Hotkey-Problem zu lösen?

BEARBEITEN: Ich verwende Windows 10 Pro.

Ich habe tatsächlich versucht, ein VB .net-Programm zu erstellen, das explorer.exenach der Registrierung der Hotkeys gestartet wird, aber ich bekomme es nicht zuverlässig zum Laufen. Wenn explorer.exees keine Shell ist und ich explorer.exe starte, wird mir, obwohl es nicht ausgeführt wird, nur ein Dateibrowser angezeigt, nicht die Taskleiste usw. Wenn Explorer die Shell ist und startet, bricht das Beenden durch mein Programm die Startreihenfolge ab, sodass ich meine Routine erheblich verzögern muss, was bedeutet, dass ich irgendwann einen merklichen Neustart des Explorers erhalte, was alles andere als ideal ist.

Ich habe mit der Idee gespielt, eine eigene Shell als Ersatz für die Taskleiste und den Desktop zu erstellen, aber da ich den Actual Tools Window Manager verwende und dieser darauf angewiesen ist, dass Explorer die Shell ist, ist das auch nicht wirklich ideal. Aus diesem Grund ist diese Frage noch offen, obwohl ich befürchte, dass das, was ich frage, einfach nicht möglich ist.

Antwort1

Tastaturfilter (WMI-Anbieterreferenz)

Wird nur in Windows 10 Enterprise und Windows 10 Education unterstützt

WEKF_PredefinedKey
Diese Klasse blockiert oder entsperrt vordefinierte Tastenkombinationen, wie z. B. Ctrl+ Alt+Delete

class WEKF_PredefinedKey {
 [Static] uint32 Enable (
   [In] string PredefinedKey<
 );

 [Static] uint32 Disable (
   [In] string PredefinedKey
 );

 [Key] string Id;
 [Read, Write] boolean Enabled;
};

Quelle: Microsoft Docs

Antwort2

Ich habe diese Idee nicht getestet, aber sie scheint plausibel und unkompliziert: Anstatt den Explorer zu ersetzen, erstellen Sie eine .regDatei, die die vom Explorer in der Registrierung erstellten anstößigen Einträge löscht oder ändert. Erstellen Sie dann eine Aufgabe im Windows-Taskplaner, die die Datei ausführt .regund bei jeder Anmeldung bei Windows ausgelöst wird.

Weitere Informationen finden Sie unter:
So fügen Sie Registrierungsunterschlüssel und -werte mithilfe einer REG-Datei hinzu, ändern oder löschen sie

Antwort3

Hier ist es gelöst: https://github.com/stringlapse/OfficeKeyFix

Sie sollten Visual Studio mit Erweiterung für normale C++-Aufgaben laden. Erstellen Sie ein leeres Projekt, bauen Sie es und verschieben Sie es in den Autostart.

Es ist besser, Aufgaben im Aufgabenplaner mit einer Verzögerung von 30 oder 60 Sekunden zu erstellen.

verwandte Informationen