Windows沙拉:預設瀏覽器背後的故事

來源:互聯網
上載者:User
文章目錄
  • 什麼是預設瀏覽器?
  •  
  • 副檔名關聯
  • 註冊表
  • 協議關聯
  • 開始菜單中顯示的瀏覽器
  • 總結
  •  
  • 參考資料

在Windows系統中很多瀏覽器中都有設定“預設瀏覽器”的功能,基本上家家都有。除了瀏覽器自身的設定外,XP、Win7中也提供了很多方法來設定。特別是Win7中,專門提供了一個叫“預設程式”的設定項。那麼,這些設定背後的故事是什麼呢?

 

什麼是預設瀏覽器?

要研究東西,先要明確它的範圍和定義。 那麼,什麼是預設瀏覽器呢?我總結了下,主要有下面三塊內容:


 
 
因此設定預設瀏覽器,只需要把上面的三塊內容分別搞清楚即可。

 

 副檔名關聯

在Windows系統的設計中,一個軟體可以有多個副檔名。為了區分不同的軟體,因此一個軟體(App)就對應一個ProgId(Programmatic Identifiers),而一個副檔名則與一個ProgID相關聯。當然,一個App是可以有多個ProgId的,比如說一類來處理檔案管理,一類來處理其它的關聯。

 

 

 

下面看一下Firefox瀏覽器的執行個體:

 

那麼這些資訊是儲存在那裡呢?

 

註冊表

 

上面看到的資訊都儲存在註冊表中,主要位於

HKEY_CURRENT_USER\Software\Classes

HKEY_LOCAL_MACHINE\Software\Classes

為了使用方便,註冊表中單獨定義了HKEY_CLASS_ROOT根鍵,實質上裡面的內容是HKCU和HKLM下的索引值合并後的視圖。HKCU的優先順序會高於HKLM下的。

 

所以:讀要從HKEY_CLASS_ROOT下面來讀, 如果寫的話,最好寫到HKEY_CURRENT_USER下面。

看看註冊表中的索引值:

 

 

在XP系統下,如果要想設定一個副檔名關聯到一個程式,那就要把這個副檔名的預設值寫成該App的ProgId,然後就會從該ProgId下讀取Shell\open\command來執行開啟操作。

 

 

在Win7系統下,多了一步,就是說如果下面有索引值,則會優先從下面索引值中指定的ProgId中讀取:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ext\UserChoice\Progid

如果上面的Progid索引值不存在,則會按xp下的規則執行。

 

協議關聯

 

對於http、https等協議,關聯的原理基本和副檔名差不多,但是在不同系統上有區別。

在XP系統下, http等協議不會從副檔名的預設值中指定的ProgId來讀取開啟程式,而是直接讀取http索引值下的shell\open\command.

 

在Win7系統下,也是先從下面的索引值中先讀取:

HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice\Progid

注意,讀取的是Progid,然後再從這個ProgId中讀取shell\open\command內容。而不是

 

開始菜單中顯示的瀏覽器

 

開始菜單中顯示的瀏覽器是從下面的地方讀取的:

HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\

比如Firefox顯示的就是Firefox.exe.

那系統如何知道Firefox.exe是從哪裡啟動呢?

這個Firefox.exe是位於

HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\

HKEY_LOCAL_MACHINE\Software\Clients\StartMenuInternet\

下的索引值。

在這個索引值下有shell\open\command\

 

這個索引值XP和Win7下都是一樣的。

 

總結

xp下設定預設瀏覽器需要修改的索引值

改開始菜單顯示的預設瀏覽器:

HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\@
新: 字串: "Google瀏覽器"

 

改.htm、.html等副檔名   寫入ProgId
HKEY_CURRENT_USER\Software\Classes\.htm\@
新: 字串: "ChromeHTML"

 

改http、https、ftp等協議

寫入DefaultIcon
寫入shell open command

HKEY_CURRENT_USER\Software\Classes\ftp\DefaultIcon\@
新: 字串: "C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Chrome\Application\chrome.exe,0"

HKEY_CURRENT_USER\Software\Classes\ftp\shell\open\command\@
新: 字串: ""C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" -- "%1""

Win7下需要修改的索引值

改開始菜單顯示的預設瀏覽器:

HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\@
新: 字串: "Google瀏覽器"

 

改.htm、.html等副檔名   寫入ProgId

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.htm\UserChoice\Progid
新: 字串: "ChromeHTML"

 

改http、https、ftp等協議

HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice\Progid
新: 字串: "ChromeHTML"

 參考資料

Programmatic Identifiers

http://msdn.microsoft.com/en-us/library/cc144152(VS.85).aspx

MSDN(VS2008附帶):

Win32 and COM Development\User Interface\Windows User Experience\Windows Shell\Windows shell\Shell Developer’s Guide\Integration of Applications into the Shell for File Format Owners

工具:RegSnap

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.