2016-12-13 2 views
0

ich einen Registrierungswert inzum Erstellen oder query registry mit RegOpenKeyEx

HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\11.0\Identity => key = tName , value="user1" 

schreiben will, aber jedes Mal, wenn ich bekam "RegOpenKeyEx SOFTWARE\Adobe\Acrobat Reader\11.0\Identity failed (error=2) " als Fehler deuten darauf hin, die Identität Schlüssel in der Registrierung nicht vorhanden ist.

So erstellen Sie eine Registrierung, wenn sie nicht vorhanden ist. Ich möchte erstellen, wenn der Schlüssel nicht vorhanden ist und öffnen Sie die Registrierung ist da.

lStat = RegOpenKeyEx(HKEY_CURRENT_USER, /*handle of open key */ 
     szSubKey, /* address of name of subkey to open */ 
     0, /* reserved */ 
     KEY_READ , /* security access mask */ 
     &hKey /* address of handle of open key */ 
     ); 
if (lStat != ERROR_SUCCESS) { 
     sprintf(szMsg,"RegOpenKeyEx %s failed (error=%ld) ", 
     szSubKey, lStat); 
     traceMsg(szMsg); 
     return lStat; 
    } 

    lStat = RegSetValueEx(hKey,(LPCTSTR)szValue, NULL, &Type, 
      (LPBYTE)szUser, strlen(szUser)+1); 

enter image description here

+0

Es ist schwer zu sagen, was genau vor sich geht. Bsp .: Übergeben Sie die richtige Saite? Probieren Sie die allgemeine Debugging-Technik aus, d. H. Probieren Sie zahlreiche Varianten aus, wie zum Beispiel versuchen, einen anderen Schlüssel zu öffnen, wie nur "Software". Wird es funktionieren? Wenn ja, versuchen Sie etwas Komplexeres. –

Antwort

1

Ist dieser Schlüssel gibt es? MSDN:

Im Gegensatz zur RegCreateKeyEx Funktion, wird die RegOpenKeyEx Funktion nicht den angegebenen Schlüssel erstellen, wenn der Schlüssel in der Registrierung nicht vorhanden ist.

Zuerst regedit versuchen.

Zweitens geben Sie KEY_READ an und möchten dann etwas schreiben.