Fehler beim Registry WriteBinaryData DWORD



  • Hallo,

    ich bekomme es nicht hin 😞
    er sagt mir immer:
    ---------------------------
    Fehler beim Setzen der Daten für 'DisableAutoDaylightTimeSet'
    ---------------------------

    TRegistry *Registry = new TRegistry(KEY_READ);
    
    Registry->RootKey = HKEY_LOCAL_MACHINE;
    
    DWORD buf = 1;
    
    bool openResult = Registry->OpenKey("SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation", 0);
    if (openResult)
    {
    	Registry->Access = KEY_WRITE;
    
    	Registry->WriteBinaryData("DisableAutoDaylightTimeSet", (BYTE*)&buf, sizeof(DWORD));
    
    }
    
    Registry->CloseKey();
    delete Registry;
    


  • Weil normale Benutzer keine Schreibrechte in HKEY_LOCAL_MACHINE haben?

    Nimm außerdem mal einen Smartpointer, sonst hast du ein Handle-Leck.



  • Ja OK ... Bei manchen Sachen habe ich schon ein Smartpointer benutzt habe ich hier vergessen.

    Das mit dem Adminrechte bestimmt.

    Aber bei dem Script oben, geht er trotzdem nicht

    aber mit

    HKEY key = NULL;
    DWORD dwRet = 0;
    DWORD dwNumber = 1;
    
    dwRet = RegCreateKeyExA(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation",0,
    				0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&key, 0);
    
    if (dwRet != ERROR_SUCCESS)
    {
    	ShowMessage("RegCreate");
    }
    else
    {
    //dwRet = RegSetValueExA(key,"DisableAutoDaylightTimeSet",0,REG_DWORD, (BYTE*)&dwNumber,sizeof(DWORD));
    dwRet = RegSetValueExA(key,"DynamicDaylightTimeDisabled",0,REG_DWORD, (BYTE*)&dwNumber,sizeof(DWORD));
    
    if (dwRet != ERROR_SUCCESS)
    {
    	ShowMessage("RegSet");
    }
    
    }
    RegCloseKey(key);
    

Anmelden zum Antworten