Binärwert in Registry schreiben



  • Ich bin dabei, eine "Registry-Backup" Funktion zu schreiben.
    Problem:
    Binäre Werte sichere ich etwa so, wie auch Regedits Sicherung aussieht:

    hex:54,2d,4b,53,78,7c,62,7a,72,79,63,72,37,62,79,73,37,52,7e,79,64,63,72,

    Das ist erstmal ein String, den ich so aus einer Sicherungsdatei rauslese.
    Problem ist, das ich den so einfach nicht mehr in die Registry schreiben kann.

    Müsste ich den String erst mühselig umwandeln, um ihn wieder als binär-wert in die Registry zu schreiben??

    Wenn ja, frag ich mich, wieso Regedit den Binärwert so speichert, wenn er erst wieder umgewandelt werden muss.
    Oder gibt´s da was einfacheres??

    Bin für jeden Hinweis dankbar



  • Ich arbeite unter Linux. Was ist bitteschön "Registry"? 😉
    Und ja, anscheinend musst du den String mühselig umwandeln 😉



  • Die WinApi leute werden da besser bescheid wissen.
    Thread verschoben ins WinApi Forum. WinAPI



  • Hallo Susanne,

    wenn Du aus einer Textdatei Daten liest, wo die sie in hexadezimaler Form vorliegen, mußt Du logischerweise das Ganze umwandeln, bevor Du die Werte wieder ein die Registry enträgst. Du könntest Dir das ganze nur dann sparen, wenn Du die Daten binär in die Datei schreibst. Das hat aber den Nachteil, daß man dann die Werte in einem Editor nicht mehr lesen kann.

    Ich hab soetwas aber schon an anderer Stelle gemacht. Hier ein Beispiel für die Umwandlung von Hexadezimalzahlen (BYTES) die nicht durch Komma getrennt sind

    ...

    BYTE    WINAPI  HZif(BYTE HZ)
    
    {
    
    HZ = toupper(HZ);
    if (HZ >= 'A')
    {
      return (HZ - 'A' + 10);
    else
      return (HZ - '0');
    }
    
    }
    
    VOID    WINAPI Str2Bin (LPBYTE Dst, LPBYTE Src)
    
    {
    WORD    Len,n;
    BYTE    Val;
    
    Len = strlen(Src);
    Val = n = 0;
    while (Len)
    {
      if (n & 1)
      {
        Val = (Val << 4) + HZif(*Src);
        *Dst++ = Val;
      else
        Val = HZif(*Src);
      }
      Len--;  Src++; n++;
    }
    
    }
    

    [ Dieser Beitrag wurde am 24.02.2003 um 17:47 Uhr von Uli editiert. ]


Anmelden zum Antworten