windows - RegDBKeyExists returnerer altid -1 (forkert)

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne søge et register, men det returnerer altid -1 (eksisterer ikke), selv når det faktisk eksisterer.


Se venligst min kode og se om jeg mangler noget:


export prototype installFramework(HWND);

function installFramework(hMSI)
  STRING szProgram, szKey, szName, szValue, szMsg;
  NUMBER reg, nSize, nResult;
begin        

REGDB\_OPTIONS = REGDB\_OPTIONS | REGDB\_OPTION\_WOW64\_64KEY;  
RegDBSetDefaultRoot(HKEY\_LOCAL\_MACHINE);         

reg = RegDBKeyExist("SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Install");                               

if (reg < 0) then

  szMsg = "Message here.";

  MessageBox (szMsg, INFORMATION);   

  szProgram = INSTALLDIR ^ "dotnetfx40\_full\_x86\_x64.exe";  
  LaunchAppAndWait(szProgram, "", WAIT );
endif; 
end;

Bedste reference


Hvis du kontrollerer om key exists så skal du gøre dette:


   reg = RegDBKeyExist("SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full");


RegDBKeyexist will only check if a key exists, not a value. fra flexerasoftware.com [9]


For at tjekke for To find out if a value exists then you can use the RegDBGetKeyValueEx function and check if it fails to get the value.


du søgte efter RegDBKeyExist("SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Install");
hvor Install er en værdi, så det gav dig -1