Windows默認瀏覽器的路徑在註冊表(REGEDIT.EXE)的HKEY_CLASSES_ROOT\http\shell\open\command\,提取數據需要使用下面三個註冊表操作函數.並給出設計思路源碼
- 打開註冊表句柄RegOpenKeyEx()
- 提取數據RegQueryValueEx()
- 關閉註冊表句柄RegCloseKey()
- 提取在雙引號中的瀏覽器路徑
char Browser_Path[2056];// 瀏覽器路徑
// ————————————————————–
// 獲取系統默認瀏覽器路徑
// ————————————————————–
char * Get_WebBrowserPath_SEO(void)
{
long ret;
HKEY hKey;// 註冊表句柄
WCHAR path[2056];//
char data[2056];
DWORD length;
// 打開註冊表
// HKEY_CLASSES_ROOT\http\shell\open\command
ret = RegOpenKeyExW(HKEY_CLASSES_ROOT,L”http\\shell\\open\\command”,0,KEY_ALL_ACCESS,&hKey);
if(ret != ERROR_SUCCESS)
return NULL;
// 獲取REG_SZ
DWORD type = REG_SZ;//類型
length = sizeof(path);//
ret = RegQueryValueExW(hKey,NULL,NULL,&type,(PBYTE)path,&length);
if(ret != ERROR_SUCCESS)
return NULL;
// 關閉註冊表句柄
RegCloseKey(hKey);
// 轉換為UTF-8
length = WideCharToMultiByte(CP_UTF8, NULL, path, wcslen(path), data, sizeof(data), NULL, NULL);
data[length] = NULL;
// 清零
memset(Browser_Path,0,sizeof(Browser_Path));
// 提取路徑
for(int i = 0,index = 0;i<(int)length; ++i)
{
if(data[i] == ‘”‘ && index != 0)
break;// 讀取完畢跳出
if(data[i] != ‘”‘)
{
Browser_Path[index] = data[i];
++index;
}
}
return Browser_Path;// 返回路徑
}