windows - Sådan ændres standard søgning udbyder af IE 9 ved registreringsdatabasen Redigering gennem C ++ program?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil ændre standard søgning udbyder af IE (9) ved at redigere registreringsfilen. Jeg har fulgt trinene i linket: http://www.online-tech-tips.com/internet-explorer-tips/change-default-search-engine-ie/.[3]


Men når jeg ændrer DefaultScope-værdi til et omfang i SearchScopes, skal du genstarte computeren eller åbne IE, foretage en søgning i adresselinjen eller lukke IE. Værdien af ​​DefaultScope er gendannet til tidligere værdi.


Hvorfor? Eller hvad er min fejl?


Hvordan ændrer jeg søgemaskineens søgemaskine i programmæssigt omfang (ikke i IE, kan være via registreringsdatabasen eller i min C ++-kode)? (Jeg skriver et C ++-program, der skal ændre IEs søgemaskine)



  Jeg har skrevet denne funktion til Firefox eller Chrome. Det virker godt.
  Med Firefox gemmes disse oplysninger i filen prefs.js. jeg kan
  Læs eller skriv oplysninger, der er nødvendige for denne fil, nemt. Med Chrome,
  disse oplysninger gemmes i to filer i brugerprofil mappe:
  Præferencer og webdatafiler. Filen Præferencer er en JSON-fil. jeg
  Få disse oplysninger nemt ved at analysere denne JSON-fil. Men at sætte
  Oplysninger om søgemaskineudbyder til Chrome. Vi skal ændre dem
  oplysninger i Web Data-fil. Webdatafil er en SQLite-fil. Jeg bruger
  SQLite bibliotek for at få adgang til dette.

  
  Med Internet Explorer kan jeg få disse oplysninger i det pågældende register
  sti. Men jeg kan ikke indstille disse oplysninger med den registreringsvej. Så jeg
  tror, ​​at ligesom Chrome, IE (eller registreringsdatabasen) skal ændre disse oplysninger
  et eller andet sted. Men jeg ved ikke hvor.


Bedste reference


Her er et detaljeret svar på dit spørgsmål. [4]


Der er to muligheder du kan vælge fra brug af IOpenServiceManager:


CComQIPtr<IOpenServiceManager> spManager;
check(spManager.CoCreateInstance(\_\_uuidof(OpenServiceManager), CLSCTX\_ALL));

CComQIPtr<IOpenService> spService;
check(spManager->InstallService(PU\_POSTINSTALL\_ANT\_SEARCH\_PROVIDER\_XML, &spService));

if(makeItDefault)
{
    // Request that the user change their search default
    check(spService->SetDefault( TRUE, hPromptParent ));
}


eller ændre registreringsdatabasen:


LPCWSTR searchScopesKeyName = L"Software\Microsoft\Internet Explorer\SearchScopes";

createKey(rootKey, HKEY\_CURRENT\_USER, searchScopesKeyName);

std::wstring clsidString = findProviderClsid(false);
if( clsidString.empty() )
    clsidString = mc\_providerClsidString;

if( makeItDefault )
    setStringValue( rootKey, mc\_defaultScopeValueName, clsidString.c\_str() );

ATL::CRegKey subKey;
createKey(subKey, rootKey.m\_hKey, clsidString.c\_str() );

setStringValue( subKey, mc\_displayNameValueName, mc\_providerName );
setStringValue( subKey, mc\_faviconUrlValueName, mc\_providerFaviconURL );
setStringValue( subKey, mc\_urlValueName, mc\_providerURL );

Andre referencer 1


Bare at give en sidebemærkning, at SetDefault-funktionen blev udskrevet på Microsoft Edge-browseren. Efter KB3148198 opdatering er den også blokeret. Funktionen vender tilbage
OS\_E\_CANCELLED i stedet. [5] [6]