RegDBKeyExists всегда возвращает -1 (неправильно) - PullRequest
1 голос
/ 19 марта 2012

Я хочу найти реестр, но он всегда возвращает -1 (не существует), даже если на самом деле он существует.

Пожалуйста, посмотрите мой код и посмотрите, что я что-то упустил:

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;

1 Ответ

3 голосов
/ 20 марта 2012

Если вы проверяете, если key exists, то вы должны сделать это:

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

RegDBKeyexist will only check if a key exists, not a value. из flexerasoftware.com

Чтобы проверитьTo find out if a value exists then you can use the RegDBGetKeyValueEx function and check if it fails to get the value.

вы проверяли RegDBKeyExist("SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full\\Install");, где Install - это значение, поэтому оно давало вам -1

...