Visual Basic Registry十六进制转换输出问题

时间:2013-04-29 14:42:52

标签: .net vb.net registry

嗨,盖伊,我对这个论坛很陌生,所以请光临我。

我正在尝试在Visual Basic 2012中构建一个应用程序,它将从注册表项中读取多个值及其数据,并从十六进制转换为ascii,然后输出到列表框。

即“HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ RecentDocs”将包含任何近期文件的多个条目。

我遇到的问题是,每次代码运行时都可以正常读取数据,我相信它正在从十六进制转换为ascii,但它只会输出每个十六进制转换的第一个字母。

这是代码

Imports Microsoft.Win32
Imports System.Windows.Forms.VisualStyles.VisualStyleElement.Status

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) andles MyBase.Load
        Dim regkeyRunMRU As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs", False)
        Dim w As Object = regkeyRunMRU.GetValueNames()
        For Each s In w
            If s <> "MRUList" Then
                ListBox1.Items.Add(GetREG_BINARY(regkeyRunMRU.ToString, s))
            End If
        Next
    End Sub

    Public Function GetREG_BINARY(ByVal Path As String, ByVal Value As String) As String

        Dim Data() As Byte = CType(Microsoft.Win32.Registry.GetValue(Path, Value, Nothing), Byte())
        If Data Is Nothing Then Return "N/A"
        Dim Result As String = String.Empty
        For j As Integer = 0 To Data.Count - 1
            Result &= Hex(Data(j)).PadLeft(2, "0"c) & " "
        Next

        Dim sResult = Result.Replace(" ", "")
        Dim strTemp As String
        Dim strReturn As String
        Dim I As Long
        For I = 1 To Len(sResult) Step 2
            strTemp = Chr(Val("&H" & Mid$(sResult, I, 2)))
            strReturn = strReturn & strTemp
        Next I
        Return strReturn
    End Function


End Class           

任何帮助都会非常感激

马特

对不起,如果我没有正确使用代码框

0 个答案:

没有答案