Wie kann ich einen REG_BINARY Wert aus der Registrierung in eine Zeichenfolge konvertieren? (Vb.net)
-
20-08-2019 - |
Frage
Ich habe einen Registrierungswert, der als binärer Wert gespeichert (REG_BINARY), die Informationen über einen Dateipfad. Der Wert wird in einen Byte-Array ausgelesen. Aber wie kann ich es in einen lesbaren String umwandeln?
Ich habe über system.text.encoding.ASCII.GetString (Wert) gelesen, aber das funktioniert nicht. Soweit ich den Registrierungswert ist willkürlich Binärdaten und nicht ASCII kennen gelernt haben, die der Grund für das Verfahren ist nutzlos, Daten zu erzeugen.
Weiß jemand, wie ich die Daten konvertieren?
Beispiel: (Ein Stück des Eintrags)
01 00 00 00 94 00 00 00 14 00 00 00 63 00 3A 00 5C 00
70 00 72 00 6F 00 67 00 72 00 61 00 6D 00 6d 00 65 00
5C 00 67 00 65 00 6D 00 65 00 69 00 6E 00 73 00 61 00
6D 00 65 00 20 00 64 00 61 00 74 00 65 00 69 00 65 00
6E 00 5C
Durch die regedit dies sein soll:
............c.:.\.p.r.o.g.r.a.m.m.e.\.g.e.m.e.i.n.s.a.m.e. .d.a.t.e.i.e.n.\
Der Eintrag selbst wurde von Outlook erstellt. Es ist ein Eintrag für einen behinderten Addin Artikel (Elastizität)
Lösung
Nun, es ist nicht beliebig Binärdaten - es ist Textdaten in einig Art der Codierung. Sie müssen herausfinden, was die Codierung ist.
würde ich nicht überrascht, wenn Encoding.Unicode.GetString(value)
gearbeitet - aber wenn das nicht der Fall, schreiben Sie bitte eine Probe (in hex) und ich werde sehen, was ich tun kann. Was bedeutet die Dokumentation, was auch immer die Daten dort setzen ist in sagen?
EDIT: Es sieht aus wie Encoding.Unicode dein Freund ist, aber ausgehend von Byte 12. Verwendung
Encoding.Unicode.GetString(bytes, 12, bytes.Length-12)
Andere Tipps
hatte ich auch dieses Problem und ich auf diese Weise gelöst:
Ich hatte eine Variable als deklariert:
Dim encoding As System.Text.Encoding = System.Text.Encoding.Unicode
Dann mache ich dies in einer Schleife:
For Each Val As String In ValueName
data = k.GetValue(Val)
ListRecent.Items.Add(Val & ": " & encoding.GetString(data))
Next
So in listbox genannten "ListRecent" Ich habe die komplette Liste der zuletzt erhaltenen
Mit
Function Microsoft.Win32.RegistryKey.GetValue(name as String) as Object
Schauen Sie auch bei System.Text.Encoding
und System.Text.Encoding.Unicode