VC获取默认浏览器(一)

2013-05-03 18:11:17 · 作者: · 浏览: 138

  如何获取系统当前的默认浏览器呢?呃,如果你说,去读HKEY_CLASSES_ROOT\http\shell\open\command 的注册表值,也不是不可以,但在WIN7 下不一定正确。那么我是怎么知道的呢?

  昨天这样读了半天,发现总是不正确,我们将Chrome 设为默认浏览器,发现QQ 电脑管家弹出提示,然后果断打开之,发现:

 

  我们果断得到了一个注册表项:

  HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\Ftp\UserChoice[Progid]。

  然后发现它的值为ChromeHTML.FXI4CGER3K4X3DSME7GMQ74NWM。

  然后我们去HKEY_CLASSES_ROOT\ChromeHTML.FXI4CGER3K4X3DSME7GMQ74NWM\shell\open\command 下,就可以读出默认值了。

 

  如果是IE 浏览器的话,将在HKEY_CLASSES_ROOT\IE.FTP\shell\open\command 下获取到。所以,在WIN7 下整个获取过程如下:

  [cpp]

  void LaunchDefaultBrowser()

  {

  HKEY hDefBrowserPos = NULL;

  wstring wstrDefBrowserPath = L"iexplore.exe";

  WCHAR wszBuffer[MAX_PATH + 1] = {0};

  DWORD dwDataSize = sizeof(wszBuffer);

  if (ERROR_SUCCESS == ::RegGetValueW(

  HKEY_CURRENT_USER,

  L"Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\Ftp\\UserChoice\\",

  L"Progid",

  RRF_RT_REG_SZ,

  0,

  wszBuffer,

  &dwDataSize

  ))