Ja, Sie können es mit direkter Registrierungsmanipulation skripten.
Die kurze Antwort
Kopieren Sie jede der folgenden Komponenten in .reg
Dateien (wie firefox.reg
, chrome.reg
, ie.reg
) und führen Sie sie , wenn Sie wechseln möchten (oder Skript mit reg.exe
).
Für Firefox:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="FirefoxURL"
Für Chrome:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="ChromeHTML"
Für IE9:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="IE.HTTP"
Die lange Antwort
Windows speichert Standardprotokoll-Standardregistrierungen pro Benutzer unter dem UrlAssociations
Schlüssel unter
HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations
Ähnlich wie bei Dateizuordnungen kann es ein "Standardprogramm" für Links geben. Dies ist eine Art Jargon-Terminologie, die sich auf den UserChoice
Schlüssel bezieht. Es gibt auch eine standardmäßige Dateizuordnungs-ähnliche Shell-Registrierung unter der http
ProgId, die ebenfalls geändert werden kann. Die proximale Konfiguration für Browser erfolgt jedoch über Standardprogramme (siehe unten für einen zusätzlichen Kommentar hierzu ).
Worüber ich hier spreche, ist, was Sie ändern, wenn Sie in der Systemsteuerung im Abschnitt Standardprogramme einen Browser einrichten:
Um dies direkt in der Registrierung zu konfigurieren, überprüfen wir zunächst, ob es bereits vorhanden ist. In diesem Screenshot habe ich zu dieser Tastatureingabe navigiert regedit.exe
und Chrome ist mein Standardbrowser, der durch den ChromeHTML
ProgId-Wert gekennzeichnet ist.
Die minimale Änderung, die Sie vornehmen müssen, um zu wechseln, welcher Browser geöffnet wird, wenn Sie auf einen Link klicken, besteht darin, den ProgId
Wert unter dem UserChoice
Unterschlüssel für jedes Protokoll zu ändern, das Sie ändern möchten (wahrscheinlich http
und https
wird derselbe sein, aber wenn Sie aus irgendeinem Grund beide vornehmen möchten von denen, die in separaten Browsern geöffnet sind, könnten Sie).
Jetzt müssen Sie nur noch festlegen, was Sie für Firefox, IE und jeden anderen Browser verwenden möchten, zu dem Sie möglicherweise wechseln möchten. Wenn Sie dies programmgesteuert ermitteln möchten, können Sie dazu den Capabilities
Schlüssel der Browserregistrierung eingeben, den Sie hier für Firefox finden:
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\Capabilities\URLAssociations
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet
Hier werden alle Browser aufgelistet, und jeder sollte die obige Struktur haben.
Wenn ich zu Firefox wechseln würde, würde ich den FirefoxURL
ProgId-Wert verwenden, der in UrlAssociations gesichert wird.
(Wenn Sie jedoch nicht so herumgraben möchten, gibt es einen schnellen Trick: Legen Sie einfach den gewünschten Browser als Standard fest und aktualisieren Sie regedit, um zu sehen, was der Browser für das UserChoice
! Eingestellt hat. )
Alles, was wir tun müssen, ist, diesen Schlüsselwert in zu ändern FirefoxURL
und die Links jetzt in Firefox zu öffnen. Anschließend können Sie entweder auf einen Link klicken oder in der Systemsteuerung überprüfen, ob die richtige Standardeinstellung registriert ist:
Nun, wenn Sie genau aufgepasst haben, haben Sie vielleicht ein paar Fehler bei all dem bemerkt:
IE hat keinen URLAssociations
Unterschlüssel unter seiner StartMenuInternet
Browserregistrierung in. Woher kommt also der ProgId-Wert? Antwort: Ich weiß es nicht, zumindest nicht ohne weitere Nachforschungen. Möglicherweise ist es fest codiert oder in einem anderen Schlüssel enthalten, den ich noch nicht gefunden habe.
Firefox ProgId ist unter seinen URLAssociations
sind FirefoxURL
, aber wenn Sie auf in den Optionen im Browser selbst registrieren, verwendet es FirefoxHTML
als ProgId statt! Warum? Ich weiß es auch nicht. Beide funktionieren, weil beide existieren und auf Firefox verweisen. Vielleicht ist es beabsichtigt, aber wahrscheinlich ist es nur ein Fehler ohne Wirkung.
Was passiert, wenn kein UserChoice
Standardprogramm vorhanden ist? Antwort: Es wird die "reguläre" Dateizuordnung für das Protokoll verwendet (z. B. http
). Dies wird an den Standard ProgId Orten wie Dateizuordnungen (gefunden HKCU\Software\Classes
, HKLM\Software\Classes
und die Aussicht auf HKCR
). Zumindest setzt Chrome seine Informationen dort, denke ich, aber Firefox scheint dies zumindest in meinen Tests nicht zu tun.
Ich empfehle, wenn Sie dies zum Standardprogramm-Editor hinzufügen möchten, dies auf der UserVoice-Feedback-Seite dieser Anwendung vorzuschlagen und zu bewerten . Ich bin zuversichtlich, dass der Autor der Anwendung dieses Feedback beachtet, wenn er entscheidet, wie er seine Entwicklungszeit verbringen soll!
UserChoice
Registrierung der Standardprogramme entfernen , damit die "Standard" -Dateizuordnungsschlüssel verwendet werden, auf die in Punkt 3 verwiesen wird. Sehen Sie sich beispielsweise den Standardwert von anHKEY_CLASSES_ROOT\http\shell\open\command
(Sie können denselben SchlüsselHKEY_CURRENT_USER
wie ein Standardbenutzer eingeben, wenn dies wichtig ist). Sollte nur eine Frage der Einstellung des Anwendungspfads und der Parameterzeichenfolge sein, die Ihr Browser benötigt (z. B.-- %1
glaube ich für Chrome)Wenn jemand anderes auf diese Antwort gestoßen ist und versucht hat, einen benutzerdefinierten Standardprotokoll-Handler in Windows 10 festzulegen, habe ich ihn geknackt.
Die andere Antwort auf diese Frage brachte mich mit dem
Clients\StartMenuInternet
Schlüssel, den ich zum Einstellen des Standardbrowsers in Windows 7 nicht kannte , ein Stück näher. Nachdem ich jedoch den Firefox-StartMenuInternet
Schlüssel so ziemlich dupliziert hatte , wurde mein Programm immer noch nicht in den Einstellungen angezeigt App.Revo Uninstaller Nach der Verwendung eine Deinstallation von Firefox zu starten, Cancelling Firefoxs Uninstaller dann lassen Revo Scan für übrig gebliebenen Registrierungsschlüssel, fand ich eine andere Taste:
HKLM\SOFTWARE\RegisteredApplications
. Dies scheint alle registrierten Programme zu speichern, von denen Windows über ihre Funktionalität informiert werden kann.Fügen Sie also nach dem Einrichten des
StartMenuInternet
Schlüssels einen Schlüssel hinzu, um daraufHKLM\SOFTWARE\RegisteredApplications
zu verweisenSoftware\Clients\StartMenuInternet\YOURPROGRAM\Capabilities
- ja, genau so, beginnend mitSoftware\
:Screenshot von regedit (Ich kann das Bild erst einbetten, wenn ich 10 Wiederholungen habe ...)
quelle
Damit Ihr Programm (YName.exe) als Browser betrachtet werden kann, muss es registriert sein:
1) ... StartMenuInternet - wie oben beschrieben,
HKCU \ Software \ Clients \ StartMenuInternet \ YName \ Capabilities \ URLAssociations
http = YNameURL
https = YNameURL
2) HKCU \ Software \ RegisteredApplications - wie oben beschrieben:
YName = Software \ Clients \ StartMenuInternet \ YName \ Capabilities
3) Befehl HKCU \ Software \ Classes \ YNameURL \ shell \ open \
@ = Pfad \ YName.exe
4) Befehl HKCU \ Software \ Classes \ Applications \ YName.exe \ shell \ open \
@ = Pfad \ YName.exe
quelle