Wie ändere ich meinen Standardbrowser in ein nicht aufgeführtes Programm in Windows 7?

25

Ich verwende regelmäßig mehrere Browser, daher habe ich ein Skript geschrieben, mit dem Seiten in allen Browsern geöffnet werden, die bereits ausgeführt werden (oder in Firefox, wenn es keine gibt). Ich möchte dieses Skript als Standardbrowser festlegen. Wenn ich zum Dialogfeld "Zuordnungen festlegen" gehe, HTTP auswähle und auf "Programm ändern" klicke, kann ich im daraufhin angezeigten Dialogfeld nur einen der bereits installierten Webbrowser auswählen. Dies scheint für alle Protokolle der Fall zu sein (im Gegensatz zu Dateierweiterungen, mit denen Sie unter "Andere Programme" auswählen oder nach einem Programm suchen können, das nicht aufgeführt ist). Die Windows-Hilfe sagt nichts darüber aus und sagt nur, dass die Schaltfläche "Durchsuchen ..." verwendet werden soll, die nicht verfügbar ist. Ich habe sogar den "Default Programs Editor" eines Drittanbieters ausprobiert, aber er scheint dazu nicht in der Lage zu sein.

Gibt es eine Möglichkeit, mein Skript manuell als Standard festzulegen (möglicherweise durch Bearbeiten der Registrierung)?

Morgan May
quelle

Antworten:

36

Ja, Sie können es mit direkter Registrierungsmanipulation skripten.

Die kurze Antwort

Kopieren Sie jede der folgenden Komponenten in .regDateien (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 UrlAssociationsSchlü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 UserChoiceSchlüssel bezieht. Es gibt auch eine standardmäßige Dateizuordnungs-ähnliche Shell-Registrierung unter der httpProgId, 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:

Standardprogramme für Protokolle in der Systemsteuerung

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.exeund Chrome ist mein Standardbrowser, der durch den ChromeHTMLProgId-Wert gekennzeichnet ist.

Navigieren Sie in regedit zum Unterschlüssel UrlAssociations

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 ProgIdWert unter dem UserChoiceUnterschlüssel für jedes Protokoll zu ändern, das Sie ändern möchten (wahrscheinlich httpund httpswird 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 CapabilitiesSchlü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.

Navigieren Sie in regedit zur Funktionstaste

Wenn ich zu Firefox wechseln würde, würde ich den FirefoxURLProgId-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 FirefoxURLund 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:

Überprüfen Sie das Standardprogramm in der Systemsteuerung

Nun, wenn Sie genau aufgepasst haben, haben Sie vielleicht ein paar Fehler bei all dem bemerkt:

  1. IE hat keinen URLAssociationsUnterschlüssel unter seiner StartMenuInternetBrowserregistrierung 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.

  2. Firefox ProgId ist unter seinen URLAssociationssind FirefoxURL, aber wenn Sie auf in den Optionen im Browser selbst registrieren, verwendet es FirefoxHTMLals 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.

  3. Was passiert, wenn kein UserChoiceStandardprogramm 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\Classesund die Aussicht auf HKCR). Zumindest setzt Chrome seine Informationen dort, denke ich, aber Firefox scheint dies zumindest in meinen Tests nicht zu tun.

  4. 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!

Factor Mystic
quelle
2
Danke für die ausführliche Antwort. Was würde ich tun, wenn ich etwas anderes als einen der installierten Browser als Standard-HTTP-Handler festlegen möchte? Ist es überhaupt möglich, etwas zu verwenden, das noch nicht in der Registrierung installiert wurde? Oder muss ich einen Registrierungseintrag für mein Skript erstellen?
Morgan
2
@MorganMay Sie müssen lediglich die UserChoiceRegistrierung der Standardprogramme entfernen , damit die "Standard" -Dateizuordnungsschlüssel verwendet werden, auf die in Punkt 3 verwiesen wird. Sehen Sie sich beispielsweise den Standardwert von an HKEY_CLASSES_ROOT\http\shell\open\command(Sie können denselben Schlüssel HKEY_CURRENT_USERwie 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. -- %1glaube ich für Chrome)
Factor Mystic
1
Froh, dass ich bis zum Ende gelesen habe. Die Kombination aus dem Entfernen der ProgId-Einträge und dem Festlegen des "Standard" -Handlers in HKCR \ http \ shell \ open \ command
Brent
-1

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\StartMenuInternetSchlüssel, den ich zum Einstellen des Standardbrowsers in Windows 7 nicht kannte , ein Stück näher. Nachdem ich jedoch den Firefox- StartMenuInternetSchlü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 StartMenuInternetSchlüssels einen Schlüssel hinzu, um darauf HKLM\SOFTWARE\RegisteredApplicationszu verweisen Software\Clients\StartMenuInternet\YOURPROGRAM\Capabilities- ja, genau so, beginnend mit Software\:

Screenshot von regedit (Ich kann das Bild erst einbetten, wenn ich 10 Wiederholungen habe ...)

Walkman
quelle
-1

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


Andrey Arov
quelle
1
Willkommen bei Super User ! Bitte beachten Sie, dass die Antworten (vollständig) auf Englisch sein müssen.
Glorfindel
(1) Der  Superuser ist eine Website, die nur auf Englisch verfügbar ist. Bitte löschen Sie die Teile Ihrer Antwort, die nicht auf Englisch sind. (2) Jede Antwort sollte für sich stehen (Sinn machen) können. Dieser tut es nicht. Die Antworten sollten nicht "wie oben beschrieben" in Bezug auf andere Antworten lauten. Bitte editieren Sie dies so, dass es für sich alleine Sinn macht. Es ist in Ordnung, Teile anderer Antworten zu kopieren, solange Sie eine Gutschrift abgeben. (3) Das meiste, was dies sagt, scheint bereits gesagt worden zu sein. Stellen Sie bitte klar, welche neuen Informationen Sie hinzufügen.
Scott