Sì, puoi copiarlo con la manipolazione diretta del registro.
La risposta breve
Copiare ciascuno dei seguenti nei .reg
file (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 UrlAssociations
chiave, 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 UserChoice
chiave: esiste anche una registrazione shell simile a un'associazione di file standard sotto http
ProgId 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:
Per configurarlo direttamente nel registro, per prima cosa controlliamo che sia già lì. In questa schermata sono passato a quella chiave regedit.exe
e Chrome è il mio browser predefinito, designato dal ChromeHTML
valore ProgId.
La modifica minima che è necessario apportare per cambiare il browser che si apre quando si fa clic su un collegamento è modificare il ProgId
valore sotto la UserChoice
sottochiave su ciascun protocollo che si desidera modificare (probabilmente http
e https
sarà 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 Capabilities
chiave 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.
FirefoxURL
Dall'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:
Ora, se hai prestato molta attenzione, potresti aver notato un paio di difetti con tutto questo:
IE non ha una URLAssociations
sottochiave 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.
ProgId di Firefox è sotto di essa la URLAssociations
sono FirefoxURL
, ma quando si fa clic per registrarsi nelle opzioni del browser stesso, utilizza FirefoxHTML
come 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.
Cosa succede quando non esiste un UserChoice
programma predefinito? Risposta: http
viene 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.
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!