2010-02-01 3 views
5

Come determinare il browser predefinito di Windows (nella parte superiore del menu di avvio)?Come determinare il browser predefinito di Windows (nella parte superiore del menu di avvio)

Sto usando VB6 ma probabilmente posso adattare altro codice senza problemi.

Ci sono domande simili su Stack Overflow, ma sembrano fornire risposte errate.

Ad esempio, la chiave HKEY_LOCAL_MACHINE \ Software \ Clients \ StartMenuInternet \ elenca sia Internet Explorer che Firefox sul mio PC.

E ottenere l'associazione .html non riesce anche per me, come i file HTML sono associati con IE, ma Firefox è il mio browser predefinito.

Nota che non voglio aprire effettivamente il browser, ma solo il suo nome.

risposta

12

HKEY_CURRENT_USER\Software\Classes\http\shell\open\command\(Default) è il gestore dell'utente corrente per il protocollo HTTP (che significa "browser predefinito"; NOTA: questo NON è la stessa cosa del gestore predefinito .html!).

Tuttavia, è possibile avere un browser diverso nella parte superiore del menu Start senza modificare l'impostazione predefinita. Cordiali saluti, il nome del browser eseguibile nel menu Start è memorizzato in HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\(Default).

+0

Grazie. Sembra che ho fatto la domanda sbagliata. Quando si fa clic su un file HTML, il browser che si apre è quello che ha registrato il protocollo HTTP, non il browser che si trova nel menu di avvio. Questo ha risolto il mio problema. – soupagain

+1

@soupagain: in realtà, no. Quando fai clic su un file .html ** **, il browser che lo apre è quello che ha registrato l'estensione .html. Quando apri un http: // ** link ** (ad esempio digitandolo nella casella "Start-> Esegui"), il browser che si apre è quello che ha registrato il protocollo HTTP (anche se di solito è lo stesso browser in entrambi i casi). Hai ragione sul fatto che tutto ciò che viene visualizzato nel menu Start non è correlato a questo. – Piskvor

+0

Sì, questo è quello che intendevo dire, ma lo hai spiegato meglio. – soupagain

2

I browser predefiniti sono in genere impostati in base all'utente. Hai provato HKEY_CURRENT_USER? Mostra sul mio sotto correttamente.

5

Testato in Windows 7 x64: Questa è una procedura in due passaggi. Il browser predefinito dell'utente è in chiave:

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice\Progid 

comune browser Nome chiave:

  • IE: IE.AssocFile.HTM
  • FireFox: FirefoxHTML
  • Chrome: ChromeHTML
  • Opera: Opera.HTML

Sostituisci <KEY NAME> di seguito con uno dei valori sopra per trovare il file eseguibile:

HKCR\<KEY NAME>\shell\open\command 

sceneggiatura Autohotkey per visualizzare il percorso browser predefinito e eseguibile:

MsgBox % "Default browser: " Browser() 

Browser() 
{ 
    ; Find the Registry key name for the default browser 
    RegRead, BrowserKeyName, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice, Progid 

    ; Find the executable command associated with the above Registry key 
    RegRead, BrowserFullCommand, HKEY_CLASSES_ROOT, %BrowserKeyName%\shell\open\command 

    ; The above RegRead will return the path and executable name of the brower contained within qoutes and optional parameters 
    ; We only want the text contained inside the first set of quotes which is the path and executable 
    ; Find the ending quote position (we know the beginning quote is in position 0 so start searching at position 1) 
    StringGetPos, pos, BrowserFullCommand, ",,1 

    ; Decrement by one for the StringMid to work correctly 
    pos := --pos 

    ; Extract and return the path and executable of the browser 
    StringMid, BrowserPathandEXE, BrowserFullCommand, 2, %pos% 
    Return BrowserPathandEXE 
} 
+0

Qualche idea di quale sia la differenza tra questa e la risposta di @ Piskvor? La sua risposta sembra funzionare su Windows 8.1 x64 (supponendo che funzioni anche su Windows 7 anche se forse è perché è un aggiornamento?) – gman