2013-01-17 3 views
6

ich ein Byte-Array gespeichert folgenden Code in der Registrierung unter VerwendungWie kann ich binäre Daten aus der Registry zu Byte-Array lesen

Byte[] value = new byte[16]{ 
    0x4a,0x03,0x00,0x00, 
    0x45,0x02,0x00,0x00, 
    0xb7,0x00,0x00,0x00, 
    0x9d,0x00,0x00,0x00 
}; 

RegistryKey key = Registry.CurrentUser.CreateSubKey(KeyName); 
key.SetValue(@"Software\Software\Key", value, RegistryValueKind.Binary); 

ist die Taste oben Code erstellt:

[HKEY_CURRENT_USER\Software\Software\Key] 
    "LOC"=hex:4a,03,00,00,45,02,00,00,b7,00,00,00,9d,00,00,00 

Jetzt möchte ich um die gleichen Daten wieder in Byte-Array-Format zu lesen. Der folgende Code kann dieselben Daten lesen, aber die Ausgabe ist vom Typ Objekt.

RegistryKey key = Registry.CurrentUser.OpenSubKey(KeyName); 
object obj = key.GetValue(@"Software\Software\Key", value); 

Hier Casting zu Byte [] funktioniert nicht. Ich weiß, dass ich Serializer oder Streams verwenden kann, um diese Aufgabe zu erfüllen. Ich würde gerne wissen, ob es eine einfachere Möglichkeit gibt, Daten zurück in den byte [] Typ zu schreiben (Ein Zwei-Liner-Code)?

Bitte beachten Sie this question ist in C++

+1

Cast arbeiten sollte . Welchen Fehler bekommst du? –

+2

Was ist "Value" in Ihrem Fall? Speichern Sie einfach die Instanzvariable "value" als solche und werfen Sie sie zurück. das sollte funktionieren .. – nawfal

+0

@nawfal, Danke für deine Antwort. Es war mein Programmierfehler. Du hast meinen Fehler gefunden. Das Objekt "Wert" und "Wert" waren unterschiedlich. Das war der Grund, warum ich den Fehler "Ungültiger Cast" erhalten habe. Ich habe meine Frage bearbeitet und werde sie für die Zukunft aufbewahren. Danke nochmal – AaA

Antwort

5

zu schreiben Ein Byte-Array zur Registrierung verwenden folgenden Code

Byte[] value = new byte[]{ 
    0x4a,0x03,0x00,0x00, 
    0x45,0x02,0x00,0x00, 
    0xb7,0x00,0x00,0x00, 
    0x9d,0x00,0x00,0x00 
}; 

RegistryKey key = Registry.CurrentUser.CreateSubKey(KeyName); 
key.SetValue(@"Software\AppName\Key", value, RegistryValueKind.Binary); 

Um die Daten abrufen zurück aus der Registry in Byte [] Format Verwendung folgende:

RegistryKey key = Registry.CurrentUser.OpenSubKey(KeyName); 
byte[] Data = (byte[]) key.GetValue(@"Software\AppName\Key", value); 

Hinweis: CurrentUser ist der Name der Wurzel für Ihren Key Standort und zeigt auf HKEY_CURRENT_USER

-1

Ich teste in VB.NET:

Dim obj As Object = key.GetValue("Software\Software\Key", value__1)` 
Dim v As [Byte]() = CType(obj, Byte())` 

und es funktioniert

so in C# sollte:

Byte[] v = Convert.ToByte(obj); 
+2

Danke für Ihre Antwort aber 'Convert.ToByte' gibt ein 'single byte' zurück – AaA

Verwandte Themen