Registry mit Klasse CRegKey



  • also ich hab mehrere long variabeln die ich in der registry gespeichert haben möchte und die nach starten des programmes autom. aufgerufen werden.

    kann mir einer erklären wie das richtig funzt ?

    zum schreiben hab ich diesen code verwendet

    UpdateData(true); 
    
        CRegKey key; 
        key.Create(HKEY_LOCAL_MACHINE, "Software\\Zielwasser\\Settings"); 
        key.SetValue(m_pos1h, "1h"); 
    
        key.Close();
    

    ich hab dann noch ein #include <atlbase.h> in die StdAfx.h reingeschrieben, aber est tut sich nix in der registry. ich hab mit sicherheit was ganz entscheidenes vergessen



  • bei mir gehts so:

    long AIT_Registry::InitKey(HKEY BaseKey, CString path)
    {
    	//Variables
    	///////////
    	DWORD Disposition;
    
    	if(RegCreateKeyEx(BaseKey,path,0,NULL,REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hRegKey, &Disposition) != ERROR_SUCCESS)
    	{
    		return -1; // Key could not be created or opened
    	}
    	else
    	{
    		return 0; // success
    	}
    }
    
    long AIT_Registry::SetKeyValueStr(HKEY BaseKey, CString path, CString RegistryKey, BYTE* value, DWORD length,INT regValue)
    {
    	if(RegKey.Open(BaseKey, path) != ERROR_SUCCESS)
    	{
    		return -1; // could not open the key
    	}
    	else
    	{
    		RegSetValueEx(hRegKey,RegistryKey,0,regValue,value,length);
    		RegKey.Close();
    		return 0; // success
    	}
    }
    

    kann mir mal jemand sagen, wie man überprüft ob ein wert in der registry gesetzt ist? ich will nicht beim ersten mal auslesen sinnlose zeichen bekommen.



  • mit CRegKey ist das sinnvoller als mit HKey.

    kann mir wer heldfen ?



  • die variable RegKey ist bei mir vom typ cregkey



  • muss aber auch mit meinem code oben gehen. weiss nur nicht ob ich was im klassenassistent vergessen habe



  • möööp habs hinbekommen

    fehlte noch ein saveconfig 🤡



  • freut mich für dich. kann mir da vielleicht noch jemand helfen?

    • enForcer - schrieb:

    kann mir mal jemand sagen, wie man überprüft ob ein wert in der registry gesetzt ist? ich will nicht beim ersten mal auslesen sinnlose zeichen bekommen.



  • also du hast den wert in die registry schon reingeschrieben und willst sie nun auslesen ? oder wie meinst du das ? wie meinst du das mit sinnlosen zeichen ?



  • ich hab einen config-dialog und der liest die werte aus der registry aus. wenn da aber noch keine werte stehen, bekomme ich irgendwelche ascii-zeichen zurück. ich wollte nur wissen, wie man überprüft, ob eine variable in der registry schon angelegt wurde oder nicht



  • Hallo,

    die entsprechende Funktion (RegQueryValueEx) wird dann schon einen Fehler zurückliefern, wenn der Eintrag nicht existiert.

    MfG


Anmelden zum Antworten