如何读取C++中Firefox的偏好值?

如何读取C++中Firefox的偏好值?,firefox,Firefox,我们使用以下代码从外部exe读取首选项值browser.search.defaultenginename,而无需将其加载到firefox中以检索firefox中searchbox的默认搜索引擎。 我们已经尝试了所有可能的方法,但仍然无法读取此值。它正在返回空字符串。当我们尝试使用GetPrefType方法获取首选项类型时,我们发现首选项类型无效,而不是字符串 请帮忙 方法: CString类名称::GetDefaultSearchBox{ CString strRetVal = L"unknow

我们使用以下代码从外部exe读取首选项值browser.search.defaultenginename,而无需将其加载到firefox中以检索firefox中searchbox的默认搜索引擎。 我们已经尝试了所有可能的方法,但仍然无法读取此值。它正在返回空字符串。当我们尝试使用GetPrefType方法获取首选项类型时,我们发现首选项类型无效,而不是字符串

请帮忙

方法:

CString类名称::GetDefaultSearchBox{

CString strRetVal = L"unknown";

nsCOMPtr<nsIServiceManager> sp_ServMgr;

nsresult rv = NS_GetServiceManager((nsIServiceManager**)&sp_ServMgr);
if(!(NS_FAILED(rv)))
{
    nsCOMPtr<nsIPrefService> sp_PrefMon;
    rv = sp_ServMgr->GetServiceByContractID("@mozilla.org/preferences-service;1", 
        NS_GET_IID(nsIPrefService),
        getter_AddRefs(sp_PrefMon));
    if(!(NS_FAILED(rv)) && (NULL != sp_PrefMon))
    {
        nsCOMPtr<nsIPrefBranch> sp_PrefSelect;
        rv = sp_PrefMon->GetBranch("browser.search.", getter_AddRefs(sp_PrefSelect));
        if(!(NS_FAILED(rv)))
        {
            if(NULL != sp_PrefSelect)
            {
                nsCString nsstrSBX;
                sp_PrefSelect->GetCharPref("defaultenginename", getter_Copies(nsstrSBX));                   
                strRetVal = CString(nsstrSBX.get());
            }
        }
    }
}
return strRetVal;

}

查看,我看到代码为此pref调用GetComplexValue。在中有一些关于此类型的讨论。

感谢Mathew的快速回复。我也尝试过GetComplexValue方法,但仍然返回空值。