Come posso cambiare il mio browser predefinito con un programma non elencato in Windows 7?


25

Uso regolarmente più browser, quindi ho scritto uno script che aprirà le pagine in qualsiasi browser sia già in esecuzione (o Firefox se non ce ne sono). Voglio impostare questo script come browser predefinito. Quando vado nella finestra di dialogo "Imposta associazioni", seleziona HTTP e faccio clic su "Cambia programma", la finestra di dialogo che viene visualizzata non mi consente di selezionare nulla tranne uno dei browser Web che ho già installato. Questo sembra essere il caso di tutti i protocolli (al contrario delle estensioni di file, che consentono di scegliere tra "Altri programmi" o cercare un programma non elencato). La guida di Windows non dice nulla al riguardo e dice solo di utilizzare il pulsante "Sfoglia ...", che non è disponibile. Ho anche provato "Editor programmi predefiniti" di terze parti, ma non sembra essere in grado di farlo.

C'è un modo in cui posso impostare manualmente il mio script come predefinito (magari modificando il registro)?

Risposte:


36

Sì, puoi copiarlo con la manipolazione diretta del registro.

La risposta breve

Copiare ciascuno dei seguenti nei .regfile (ad esempio firefox.reg, chrome.reg, ie.reg) ed eseguire quando si desidera passare (o, script con reg.exe).

Per Firefox:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="FirefoxURL"

Per Chrome:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="ChromeHTML"

Per IE9:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="IE.HTTP"

La lunga risposta

Windows archivia le registrazioni predefinite del protocollo standard per utente sotto la UrlAssociationschiave, disponibile all'indirizzo

HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations

Simile alle associazioni di file, può esserci un "Programma predefinito" per i collegamenti. Questa è una sorta di terminologia gergale che fa riferimento alla UserChoicechiave: esiste anche una registrazione shell simile a un'associazione di file standard sotto httpProgId che può anche essere cambiata, ma la configurazione prossimale per i browser è tramite Programmi predefiniti (vedi sotto per un commento aggiuntivo su questo ).

Quello di cui sto parlando qui è ciò che stai cambiando quando vai nella sezione Programmi predefiniti del Pannello di controllo per impostare un browser:

Programmi predefiniti per i protocolli nel Pannello di controllo

Per configurarlo direttamente nel registro, per prima cosa controlliamo che sia già lì. In questa schermata sono passato a quella chiave regedit.exee Chrome è il mio browser predefinito, designato dal ChromeHTMLvalore ProgId.

Navigazione alla sottochiave UrlAssociations in regedit

La modifica minima che è necessario apportare per cambiare il browser che si apre quando si fa clic su un collegamento è modificare il ProgIdvalore sotto la UserChoicesottochiave su ciascun protocollo che si desidera modificare (probabilmente httpe httpssarà lo stesso, ma se per qualche motivo si volesse effettuare ciascuno di quelli aperti in browser separati, potresti).

Ora è solo una questione di determinare cosa usare per Firefox, IE e qualsiasi altro browser a cui potresti voler passare. Se desideri determinarlo a livello di codice, puoi farlo scavando nella Capabilitieschiave della registrazione del browser, disponibile qui per Firefox:

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\Capabilities\URLAssociations

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet è dove sono elencati tutti i browser e ognuno dovrebbe avere la struttura sopra.

Navigazione verso la chiave delle funzionalità in regedit

FirefoxURLDall'ispezione si può vedere che se volessi passare a Firefox, utilizzerei il backup del valore ProgId in UrlAssociations.

(Tuttavia, se non volevi scavare in questo modo, c'è un trucco veloce: basta impostare qualsiasi browser che desideri come predefinito e aggiornare regedit per vedere cosa ha impostato il browser per UserChoice!)

Tutto quello che dobbiamo fare è cambiare quel valore chiave in FirefoxURL, e ora i collegamenti si aprono in Firefox. Dopo averlo fatto, puoi fare clic su un collegamento o ricontrollare nel pannello di controllo che sia registrato il valore predefinito corretto:

Doppio controllo del programma predefinito nel Pannello di controllo

Ora, se hai prestato molta attenzione, potresti aver notato un paio di difetti con tutto questo:

  1. IE non ha una URLAssociationssottochiave sotto la sua registrazione nel browser StartMenuInternet, quindi da dove proviene il valore ProgId? Risposta: non lo so, almeno non senza ulteriori ricerche. Potrebbe essere codificato o trovato in un'altra chiave che non ho ancora trovato.

  2. ProgId di Firefox è sotto di essa la URLAssociationssono FirefoxURL, ma quando si fa clic per registrarsi nelle opzioni del browser stesso, utilizza FirefoxHTMLcome il ProgId invece! Perché? Ancora una volta, non lo so. Entrambi funzionano perché esistono entrambi e puntano a Firefox. Forse è intenzionale, ma probabilmente è solo un bug senza alcun effetto.

  3. Cosa succede quando non esiste un UserChoiceprogramma predefinito? Risposta: httpviene utilizzata l' associazione di file "regolare" per il protocollo (ad es. ). Questo si trova nelle posizioni ProgId standard, proprio come le associazioni di file ( HKCU\Software\Classes, HKLM\Software\Classes, e la vista HKCR). Almeno Chrome imposta le informazioni lì, penso, ma Firefox non sembra, almeno nei miei test.

  4. Se si desidera aggiungere questo all'editor di programmi predefiniti, è consigliabile suggerirlo e votarlo nella pagina Feedback di UserVoice dell'applicazione . Ho una buona autorità che l'autore dell'applicazione presta attenzione a quel feedback quando decide come trascorrere il suo tempo di sviluppo!


2
Grazie per la risposta dettagliata. Cosa farei se volessi impostare qualcosa di diverso da uno dei browser installati come gestore HTTP predefinito? È anche possibile impostarlo per utilizzare qualcosa che non è già stato installato nel registro? O dovrò creare una voce di registro per il mio script?
Morgan,

2
@MorganMay Quello che dovresti fare è rimuovere la UserChoiceregistrazione dei Programmi Predefiniti, in modo che vengano usate le chiavi "standard" di associazione dei file, come indicato al punto # 3. Ad esempio, osserva il valore predefinito di HKEY_CLASSES_ROOT\http\shell\open\command(Puoi scrivere la stessa chiave HKEY_CURRENT_USERcome utente standard, se questo è importante). Dovrebbe essere solo una questione di impostazione del percorso dell'applicazione e di qualsiasi stringa di parametro di cui il tuo browser ha bisogno (ad esempio, -- %1penso per Chrome)
Factor Mystic,

1
Sono contento di aver letto fino alla fine. La combinazione di rimozione delle voci ProgId e impostazione del gestore "predefinito" in HKCR \ http \ shell \ open \ command
Brent

-1

Se c'è qualcun altro che è arrivato a questa risposta mentre cercava di impostare qualcosa di personalizzato come gestore di protocollo predefinito in Windows 10, penso di averlo decifrato.

L'altra risposta a questa domanda mi ha fatto fare un passo avanti con la Clients\StartMenuInternetchiave, di cui non sapevo per l'impostazione del browser predefinito in Windows 7. Tuttavia, dopo aver praticamente duplicato la StartMenuInternetchiave di Firefox , il mio programma non era ancora visualizzato nelle Impostazioni app.

Dopo aver utilizzato Revo Uninstaller per avviare una disinstallazione di Firefox, l'annullamento di disinstallazione di Firefox poi lasciare le chiavi Revo scansione per avanzi di registro, ho trovato un altro tasto: HKLM\SOFTWARE\RegisteredApplications. Questo sembra archiviare tutti i programmi registrati che Windows può dire della loro funzionalità.

Quindi, dopo aver impostato la StartMenuInternetchiave, aggiungi una chiave HKLM\SOFTWARE\RegisteredApplicationsper puntare a Software\Clients\StartMenuInternet\YOURPROGRAM\Capabilities- sì, esattamente così, a partire da Software\:

Schermata di regedit (non riesco a incorporare l'immagine fino a quando non ho 10 rep ...)


-1

Affinché il tuo programma (YName.exe) sia considerato un browser, deve essere registrato:

1) ... StartMenuInternet - come descritto sopra,

HKCU \ Software \ Clients \ StartMenuInternet \ YName \ \ funzionalità URLAssociations

http = YNameURL

https = YNameURL

2) HKCU \ Software \ RegisteredApplications - come descritto sopra:

YName = Software \ Clients \ StartMenuInternet \ YName \ Funzionalità

3) HKCU \ Software \ Classes \ YNameURL \ shell \ open \ command

@ = Percorso \ YName.exe

4) HKCU \ Software \ Classes \ Applications \ YName.exe \ shell \ open \ command

@ = Percorso \ YName.exe



1
Benvenuto in Super User ! Si noti che le risposte devono essere in inglese (interamente).
Glorfindel,

(1)  Super User è un sito solo in inglese. Elimina le parti della risposta che non sono in inglese. (2) Ogni risposta dovrebbe essere in grado di resistere (avere un senso) da sola. Questo no. Le risposte non devono dire "come descritto sopra" in riferimento ad altre risposte. Si prega di modificare questo quindi ha senso di per sé. Va bene copiare parti di altre risposte purché si attribuisca credito. (3) La maggior parte di ciò che dice sembra essere già stato detto. Si prega di chiarire quali nuove informazioni si stanno aggiungendo.
Scott,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.