كيف يمكنني تحويل قيمة REG_BINARY من التسجيل إلى سلسلة؟ (vb.net)

StackOverflow https://stackoverflow.com/questions/349410

سؤال

ولدي قيمة التسجيل التي يتم تخزينها كقيمة ثنائية (REG_BINARY) لديهم معلومات عن أسم دليل. قراءة قيمة للخروج الى مجموعة بايت. ولكن كيف يمكنني تحويلها إلى سلسلة قابلة للقراءة؟

ولقد قرأت عن system.text.encoding.ASCII.GetString (القيمة)، ولكن هذا لا يعمل. بقدر ما تعرفت على قيمة التسجيل البيانات الثنائية التعسفي ولا ASCII الذي هو السبب في طريقة لإنتاج البيانات عديمة الفائدة.

لا أحد يعرف كيف يمكن تحويل البيانات؟

وعينة: (A قطعة من دخول)

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

ونظرا لرجديت من المفترض أن يكون هذا:

............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.\

وكان إنشاء إدخال نفسها من Outlook. انها إدخال عنصر الدين المعاقين (المرونة)

هل كانت مفيدة؟

المحلول

حسنا، انها ليست <م> التعسفي البيانات الثنائية - انها بيانات النص في بعض نوع من الترميز. كنت بحاجة لمعرفة ما هو الترميز.

وأنا لن يفاجأ إذا عملت Encoding.Unicode.GetString(value) - ولكن إذا كان هذا لا، يرجى ارسال عينة (في ست عشري) وسوف نرى ما يمكنني القيام به. ماذا توثيق كل ما هو وضع البيانات في وجود أقول؟

وتحرير: يبدو Encoding.Unicode هو صديقك، ولكن بدءا من البايت 12. استخدام

Encoding.Unicode.GetString(bytes, 12, bytes.Length-12)

نصائح أخرى

وكان لي هذه المشكلة أيضا، وأنا حلها بهذه الطريقة:

وكنت قد تعريف متغير على النحو التالي:

Dim encoding As System.Text.Encoding = System.Text.Encoding.Unicode

وثم أفعل هذا في حلقة:

    For Each Val As String In ValueName
        data = k.GetValue(Val)
        ListRecent.Items.Add(Val & ": " & encoding.GetString(data))
    Next

وحتى في مربع القائمة يسمى "ListRecent" لقد حصلت على قائمة كاملة من الآونة الأخيرة

استخدم

Function Microsoft.Win32.RegistryKey.GetValue(name as String) as Object

وننظر أيضا في System.Text.Encoding وSystem.Text.Encoding.Unicode

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top