Sie können den Standardbrowser in der Registrierung finden
d. für Windows XP und Vista befindet sich unter
%Vor% 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.
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)
Hier ist der Registrierungswert aus dem Registrierungsschlüssel HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\
(default)
, während jeder Browser der Standardbrowser ist.
IEXPLORE.EXE
Google Chrome
FIREFOX.EXE
Safari.exe
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.
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.
So registrieren Sie einen Internetbrowser oder E-Mail-Client mit dem Windows-Startmenü >
Registrieren einer Anwendung bei einem URL-Protokoll
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()
.
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.
Tags und Links visual-studio visual-c++ winapi browser mfc