REG_BINARY in lesbaren String

  • Hallo zusammen

    Ich versuche hier gerade den Registry Key auszulesen, der alle bis anhin angeschlossenen HDs speichert. Das Problem dabei ist dass der Key ein REG_BINARY ist, und daher im HexFormat steht. Ich bringe es aber mit meiner Lösung nicht fertig dass der Inhalt in eine lesbare Form geschrieben wird. Folgendes habe ich bis jetzt:

    [autoit]

    #Include <String.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $HDText[1]

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To 100
    $HDReg = RegEnumVal("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", $i)
    If @error Then ExitLoop
    If UBound($HDText) = $i Then ReDim $HDText[UBound($HDText) + 1]
    $HDText[$i] = $HDReg
    Next

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To UBound($HDText) - 1
    ConsoleWrite(_HexToString(Hex(RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", $HDText[$i]))) & @CRLF & @CRLF)
    Next

    [/autoit]

    Er wandelt es zwar um, allerdings ist sind das komische Ausgaben. Zum Beispiel entspricht im Registry Editor der HEX Wert "55 00 53 00 42 00 53 00" dem binären Wert "U.S.B.S", was bei mir aber nicht der Fall ist. Ich erhalte meistens Ausgaben wie "ïµ". Jemand eine Idee?

  • Hier bitte, das ist meistens ein UTF-16 string:

    [autoit]

    $i = 1
    While 1
    $i += 1
    $HDReg = RegEnumVal("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", $i)
    If @error Then ExitLoop
    $bin = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", $HDReg)
    MsgBox(0, $HDReg, BinaryToString($bin, 2))
    WEnd

    [/autoit]