RegSetValueEx(); Fehler



  • Hallo,

    ich möchte mit dem folgenden Codeschnipsel in der Registry einen Schlüssel und den dazugehörigen Key erstellen. Leider gibt mein Compiler (Dev-C++) eine Fehlermeldung aus:

    C:\Dokumente und Einstellungen\Admin\Desktop\projekt\main.cpp In function `int main(int, char**)': 
     C:\Dokumente und Einstellungen\Admin\Desktop\projekt\main.cpp In function `int main(int, char**)': 
     C:\Dokumente und Einstellungen\Admin\Desktop\projekt\Makefile.win [Build Error]  [main.o] Error 1
    

    Wenn ich das richtig sehe, wird der Fehler durch eine falsch deklarierte Variable hervorgerufen. Ich habe es schon mit anderen Datentypen versucht, aber ohne Erfolg. Hier also der Code:

    #include <conio.h>
    #include <windows.h>
    #include <winreg.h>
    
    using namespace std;
    
    int main(int argc, char *argv[]) {
    
    // schlüssel hinzufügen
    HKEY hKey;
    RegCreateKeyEx(HKEY_CURRENT_USER,"Test",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,0);
    
    // key erstellen
    BYTE cString[]="";
    RegSetValueEx(hKey,"KeyName",0,REG_SZ,cString,strlen(cString)+1);
    
    return 0;
    
    }
    

    Danke für alle Antworten!



  • steht nach dem : nicht der Fehler?



  • Sorry, hatte doppelt eingefügt. Das steht in der Mitte:

    16 C:\Dokumente und Einstellungen\Julius\Desktop\speedup_reg\main.cpp syntax error before `char'
    


  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • #include <windows.h>
    
    int main() 
    {
    	HKEY	hKey;
    	DWORD	dwDispo;
    	RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Key"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, &dwDispo);
    	TCHAR	szData[128];
    	_sntprintf(szData, 128, TEXT("Value"));
    	RegSetValueEx(hKey, "KeyName", 0, REG_SZ, (LPBYTE)(&szData), strlen(szData) + 1);
    	RegCloseKey(hKey);
    }
    

    sollte eigentlich funktionieren ...

    edit
    text-makro eingesetzt und Schlüsselnamen verändert und nen Kommentar von dir entfernt.



  • OT: 15 Jahre nach einführung von Unicode in die Windows-Welt sollten auch die letzten Programmierer endlich anfangen konsequent mit TCHAR zu arbeiten...

    #include <windows.h>
    #include <tchar.h>
    
    int _tmain() 
    {
        // schlüssel hinzufügen
        HKEY    hKey;
        DWORD    dwDispo;
        RegCreateKeyEx(HKEY_CURRENT_USER, _T("RemDlgPos"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, &dwDispo);
        TCHAR    szData[128];
        _sntprintf(szData, 128, _T("Value"));
        RegSetValueEx(hKey, _T("KeyName"), 0, REG_SZ, (LPBYTE)szData, (DWORD) ((_tcslen(szData) + 1) * sizeof(TCHAR))); 
        RegCloseKey(hKey);
    }
    

    PS: Hab das Beispiel auf MSDN auch gleich korrigiert 😉



  • Vielen Dank euch beiden, funktioniert einwandfrei!


Anmelden zum Antworten