Abrufen des Standardbrowsers

7

Wie kann ich programmatisch feststellen, welcher Standardbrowser in meinem System ist? Der Code muss mit vc ++ entwickelt werden Gibt es dafür eine API?

Wo in der Registrierung ist der Standard-Browser-Wert gespeichert?

    
subbu 09.04.2009, 07:38
quelle

5 Antworten

9

Sie können den Standardbrowser in der Registrierung finden

d. für Windows XP und Vista befindet sich unter

%Vor%     
Konstantinos 09.04.2009, 07:50
quelle
8

Normalerweise müssen Sie das nicht wissen. ShellExecute(0,0,"http://stackoverflow.com",0,0,SW_SHOWNORMAL); wird den Trick machen. Windows erkennt das http: // und erkennt von dort, dass Sie eine URL öffnen möchten. Der "Standard" -Webbrowser ist so ziemlich definiert als der von Windows für diese Aufgabe verwendete Webbrowser.

Es wird nicht nur http: // unterstützt. ShellExecute kann den Standard-Webbrowser auch mit https: // URLs starten. Für mailto: URLs wird der Standard-Mail-Client gestartet.

    
MSalters 10.04.2009 11:55
quelle
8

TL; DR: Wenn HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\ existiert, lese das; Ansonsten lies HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\ .

Nachdem ich die Antworten hier gelesen hatte, fand ich wenig Übereinstimmung darüber, wie ich den Standard-Browser erkennen konnte, also habe ich ein paar Experimente und Nachforschungen angestellt, um es herauszufinden. Ich habe die Firefox-Quelle heruntergeladen, ein Skript geschrieben, das eine Reihe von Registrierungseinträgen liest, und auch Process Explorer ausgeführt, während ich den Standardbrowser immer wieder geändert habe.

Ich habe festgestellt, dass es viele Registrierungsschlüssel gibt, die Firefox und Chrome ändern, wenn jeder sich als Standardbrowser einstellt. Ich glaube Safari und Opera sind beide ähnlich im Verhalten. IE scheint nur einen der Registrierungsschlüssel zu ändern, die ich gerade beobachtete.

Was ich fand, war, dass, während die meisten Browser andere Registry-Pfade ändern, alle Browser HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\ (default)

ändern

Hier ist der Registrierungswert aus dem Registrierungsschlüssel HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\ (default) , während jeder Browser der Standardbrowser ist.

  • IE 9.0.8112.16421: IEXPLORE.EXE
  • Chrome 21.0.1180.60 m: Google Chrome
  • Firefox 10.0.2: FIREFOX.EXE
  • Safari 3.2.2: Safari.exe
  • Oper 12.01: Opera

Getestet auf Microsoft Windows 7 Home Premium SP1 64-Bit

Bearbeiten:

Ich habe bei einer Neuinstallation von Windows XP SP3 HKEY_CURRENT_USER\SOFTWARE\Clients\StartMenuInternet\ nicht gefunden. In diesem Fall sollten Sie den Standardbrowser von HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\ lesen. Ich vermute, dass dies auch bei Neuinstallationen anderer Windows-Versionen der Fall ist.

Nachtrag:

Die Methode ShellExecute ist eine großartige Lösung, wenn Sie nur eine Webseite im Standardbrowser öffnen möchten. Wenn Sie jedoch beispielsweise eine Erweiterung nur im Standardbrowser installieren möchten, löst ShellExecute das Problem nicht.

    
Nate 08.08.2012 22:12
quelle
2

Wie der Name schon sagt, ist StartMenuInternet für die Registrierung eines Webbrowsers im Startmenü (und nur für XP und Vista, ab Windows 7 veraltet). Das stellt nicht notwendigerweise den Browser als den Standardbrowser für das gesamte System her. Es gibt viele verschiedene Möglichkeiten, wie ein Browser für verschiedene Zwecke registriert werden kann (Laden einer Datei, Laden einer URL, Laden von Daten basierend auf einem MIME-Typ usw.). Jede dieser Registrierungen ist separat.

Standardprogramme

So registrieren Sie einen Internetbrowser oder E-Mail-Client mit dem Windows-Startmenü >

Registrieren einer Anwendung bei einem URL-Protokoll

Dateitypen

Ich persönlich würde wahrscheinlich die Registrierung des URL-Handlers "http" und / oder "https" betrachten, um den Standard-Browser zu ermitteln, da dies die App ist, die geladen wird, wenn der Benutzer eine URL in das Startmenü oder eingibt Windows Explorer oder eine App übergibt eine URL an ShellExecute/Ex() .

    
Remy Lebeau 09.08.2012 05:21
quelle
1

Lesen Sie den Standardwert von HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet und überprüfen Sie optional HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\XXX\shell\open\command , wobei XXX der Wert ist, der vom ersten Schlüssel abgerufen wird.

    
Stijn Sanders 09.04.2009 07:50
quelle