Evet, doğrudan kayıt defteri manipülasyonuyla yazabilirsiniz.
Kısa cevap
İçine aşağıdakilerden her biri kopyalama .regdosyaları (örneğin firefox.reg, chrome.reg, ie.reg) ile anahtar (veya komut dosyası ile istediğinizde onları çalıştırmak reg.exe).
Firefox için:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="FirefoxURL"
Chrome için:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="ChromeHTML"
IE9 için:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="IE.HTTP"
Uzun Cevap
Windows, kullanıcı başına standart protokolü Standart UrlAssociationsAnahtar olarak bulunan Kayıtlar tuşunda saklar .
HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations
Dosya ilişkilerine benzer şekilde, bağlantılar için "Varsayılan Program" olabilir. Bu, UserChoiceanahtara referans veren bir tür jargon terminolojisidir - httpProgId altında ayrıca değiştirilebilen standart bir dosya derneği benzeri kabuk kaydı da vardır , ancak tarayıcılar için proksimal yapılandırma Varsayılan Programlar aracılığıyla yapılır (bu konuda ek yorum için aşağıya bakın). ).
Burada bahsettiğim şey, tarayıcı ayarlamak için Kontrol Panelinin Varsayılan Programlar bölümüne gittiğinizde neyi değiştirdiğinizdir:

Bunu doğrudan kayıt defterinde yapılandırmak için önce orada olduğunu kontrol edelim. Bu ekran görüntüsünde bu tuşa girdim regedit.exeve Chrome ChromeHTMLProgId değeri tarafından belirlenen varsayılan tarayıcım .

Bir bağlantıyı tıklattığınızda hangi tarayıcının açılacağını değiştirmek için yapmanız gereken minimum değişiklik, değiştirmek istediğiniz her protokolde alt anahtarın ProgIdaltındaki değeri UserChoicedeğiştirmektir (büyük olasılıkla httpve httpsaynı olacaktır, ancak bazı nedenlerden dolayı her birini yapmak istiyorsanız ayrı tarayıcılarda açık olanlardan,
Şimdi sadece Firefox, IE ve geçmek isteyebileceğiniz diğer tarayıcılar için ne kullanılacağının belirlenmesi meselesi. Bunu programlı olarak belirlemek istiyorsanız Capabilities, Firefox için burada bulunan tarayıcı kaydının anahtarını kazarak yapabilirsiniz :
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\Capabilities\URLAssociations
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet Tüm tarayıcıların listelendiği yerdir ve her birinin yukarıdaki yapıya sahip olması gerekir.

Firefox’a geçmek FirefoxURListersem, ProgId değerini UrlAcations’larda yedek kullanacağımı denetlemeden görebilirsiniz.
(Bununla birlikte, böyle kazmak istemiyorsanız, hızlı bir hile yapın: Varsayılan olarak istediğiniz tarayıcıyı ayarlayın ve tarayıcının ayarladığı şeyi görmek için regedit'i yenileyin UserChoice!)
Tek yapmamız gereken, bu anahtar değerini değiştirmek FirefoxURLve şimdi Firefox'ta açık bağlantılar. Bunu yaptıktan sonra, bir bağlantıyı tıklatabilir veya kontrol panelinde doğru varsayılanın kaydedildiğini kontrol edebilirsiniz.

Şimdi, çok dikkat ediyorsanız, tüm bunlarda birkaç kusur olduğunu fark etmiş olabilirsiniz:
IE'nin URLAssociationstarayıcı kaydı altında bir alt anahtarı StartMenuInternetyok, bu yüzden ProgId değeri nereden geliyor? Cevap: Bilmiyorum, en azından araştırma olmadan. Henüz bulamadığım kodlanmış veya başka bir anahtarda bulunabilir.
Firefox'un ProgId o en altında URLAssociationsolan FirefoxURL, ancak tarayıcıda kendisinde seçeneklerinde kayıt tıkladığınızda kullandığı FirefoxHTMLyerine PROGID olarak! Niye ya? Yine bilmiyorum. İkisi de çalışıyor, çünkü ikisi de var ve Firefox'a işaret ediyor. Belki kasıtlıdır, ama muhtemelen etkisi olmayan bir hatadır.
UserChoiceVarsayılan Program olmadığında ne olur ? Cevap: protokol için "normal" dosya birliği (örneğin, http) kullanılır. Bu sadece dosya dernekler (gibi standart ProgId yerlerde bulunur HKCU\Software\Classes, HKLM\Software\Classesve manzaraya HKCR). En azından Chrome oradaki bilgileri belirler sanırım, ama Firefox en azından testlerimde görünmüyor.
Bunun Varsayılan Programlar Düzenleyici'ye eklenmesini istiyorsanız, bu uygulamanın UserVoice Feedback sayfasında onu önerip yükseltmeniz gerektiğini öneririm . Uygulama yazarının, geliştirme zamanını nasıl harcayacağına karar verirken bu geri bildirime dikkat ettiğini iyi bir şekilde anladım!