Alternative zu Regread?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Alternative zu Regread?

    Hallo.

    Und zwar habe ich Folgendes hier:

    VB.NET-Quellcode

    1. Public Function Hex2Ascii(ByVal Text As String) As String
    2. Dim Value As Object
    3. Dim num As Object
    4. Dim i As Object
    5. Value = Nothing
    6. For i = 1 To Len(Text)
    7. num = Mid(Text, i, 2)
    8. Value = Value & Chr(Val("&h" & num))
    9. i = i + 1 ' // +1
    10. Next i ' Next Chr
    11. Hex2Ascii = Value
    12. End Function


    VB.NET-Quellcode

    1. Dim Z As String = Hex2Ascii(Replace(Replace(RegRead(HKEY_USERS\" & sidString & "\Software\Owen\ID""), "@ByteArray(", ""), ")", ""))




    Jetzt suche ich dafür eine Alternative.

    Der Registrykey ist ein Byte().

    Ich mache es derzeit so:

    (SubK ist der Unterschlüssel ,also Subkey)


    VB.NET-Quellcode

    1. Dim Z As String = Encoding.Default.GetString(DirectCast(SubK.GetValue("ID"), Byte()))




    Leider steht da garkein @Bytearray als Zeichenfolge im String, auch kein ")" ist enthalten.

    Ebenfalls bekomme ich die Meldung:


    "Option Strict On" lässt keine Operanden des Typs "Object" für den +-Operator zu.

    Codezeile:

    VB.NET-Quellcode

    1. Value = Value & Chr(Val("&h" & num))


    Wodurch kann ich das ersetzen?
    1.) Für Len, Mid, etc. gibt es VB.NET-Alternativen, bitte merk dir das einmal
    2.) Warum bitte Dim i As Object?
    3.) (Richtig) auf die Registry zugreiffen
    4.) stackoverflow.com/questions/14…exadecimal-value-to-ascii
    Grüße,
    Lukas

    Fragen über Themen im Forum per Konversation werden gelöscht und die Absender blockiert...
    Ok, aber was läuft da falsch?

    Funktion sieht jetzt so aus (Edit):

    VB.NET-Quellcode

    1. Public Function HexToAscii(T As String) As String
    2. T = T.Replace("-" , String.Empty)
    3. Dim com As String = String.Empty
    4. For x As Integer = 0 To T.Length - 1 Step 2
    5. com &= Convert.ToChar(Convert.ToUInt32(T.Substring(x, 2), 16)).ToString()
    6. Next
    7. Return com
    8. End Function


    String, der übergeben wird:

    VB.NET-Quellcode

    1. "AE-D1-40-3D-C3-4C-39-69"


    Fehler: Die Zeichenfolge kann kein Minuszeichen enthalten, wenn die Basis nicht 10 ist.

    Codezeile:

    VB.NET-Quellcode

    1. com &= Convert.ToChar(Convert.ToUInt32(T.Substring(x, 2), 16)).ToString()

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Daniel Baumert“ ()

    Daniel Baumert schrieb:

    Die Zeichenfolge kann kein Minuszeichen enthalten
    Splitte den String am Minus-Zeichen und behandle die Zweiergruppen einzeln.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Daniel Baumert schrieb:

    dennoch kommt da Salat raus
    mit welchem Code?
    Ist doch völlig korrekt:

    VB.NET-Quellcode

    1. Dim txt = "AE-D1-40-3D-C3-4C-39-69"
    2. txt = "40-41-42-43-44-45-46-47"
    3. Dim parts() = txt.Split("-"c)
    4. Dim com As String = String.Empty
    5. For Each part In parts
    6. com &= Convert.ToChar(Convert.ToUInt32(part, 16))
    7. Next
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()