Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在目标CPU上引发错误:x86_Vb.net_Visual Studio 2010 - Fatal编程技术网

Vb.net 在目标CPU上引发错误:x86

Vb.net 在目标CPU上引发错误:x86,vb.net,visual-studio-2010,Vb.net,Visual Studio 2010,我使用此函数从计算机检索产品密钥时遇到问题 Public Function GetProductKey(ByVal KeyPath As String, ByVal ValueName As String) As String Dim HexBuf As Object = My.Computer.Registry.GetValue(KeyPath, ValueName, 0) If HexBuf Is Nothing Then Return "N/A" Dim t

我使用此函数从计算机检索产品密钥时遇到问题

    Public Function GetProductKey(ByVal KeyPath As String, ByVal ValueName As String) As String
    Dim HexBuf As Object = My.Computer.Registry.GetValue(KeyPath, ValueName, 0)
    If HexBuf Is Nothing Then Return "N/A"
    Dim tmp As String = String.Empty

    For l As Integer = LBound(CType(HexBuf, Array)) To UBound(CType(HexBuf, Array))
        tmp = tmp & " " & Hex(CByte(AscW(HexBuf.ToString(1))))
    Next

    Dim StartOffset As Integer = 52
    Dim EndOffset As Integer = 67
    Dim Digits(24) As String

    Digits(0) = "B" : Digits(1) = "C" : Digits(2) = "D" : Digits(3) = "F"
    Digits(4) = "G" : Digits(5) = "H" : Digits(6) = "J" : Digits(7) = "K"
    Digits(8) = "M" : Digits(9) = "P" : Digits(10) = "Q" : Digits(11) = "R"
    Digits(12) = "T" : Digits(13) = "V" : Digits(14) = "W" : Digits(15) = "X"
    Digits(16) = "Y" : Digits(17) = "2" : Digits(18) = "3" : Digits(19) = "4"
    Digits(20) = "6" : Digits(21) = "7" : Digits(22) = "8" : Digits(23) = "9"

    Dim dLen As Integer = 29
    Dim sLen As Integer = 15
    Dim HexDigitalPID(15) As String
    Dim Des(30) As String
    Dim tmp2 As String = String.Empty


    Dim notbuffer As Array = CType(HexBuf, Array)

    For i = StartOffset To EndOffset
        HexDigitalPID(i - StartOffset) = notbuffer.GetValue(i).ToString
        tmp2 = tmp2 & " " & Hex(HexDigitalPID(i - StartOffset))
    Next

    Dim KEYSTRING As String = String.Empty

    For i As Integer = dLen - 1 To 0 Step -1
        If ((i + 1) Mod 6) = 0 Then
            Des(i) = "-"
            KEYSTRING = KEYSTRING & "-"
        Else
            Dim HN As Integer = 0
            For N As Integer = (sLen - 1) To 0 Step -1
                Dim Value As Integer = CInt(CLng((HN * 2 ^ 8)) Or CLng(HexDigitalPID(N)))
                HexDigitalPID(N) = (Value \ 24).ToString
                HN = (Value Mod 24)
            Next
            Des(i) = Digits(HN)
            KEYSTRING = KEYSTRING & Digits(HN)
        End If
    Next
    Return StrReverse(KEYSTRING)
End Function
如果我使用x64或AnyCPU体系结构进行编译,这会很好地工作,但是如果我使用x86(这是我想要的),它会抛出以下错误:

它说:“无法将对象类型System.Int32与System.Array关联” 我想不出问题所在,我不能用那个论点来做下一个? 为什么这适用于x64和AnyCPU(自从我有了64位操作系统后仍然是x64),而不是x86


谢谢。

32位进程被重定向到HKLM\Software\Wow6432Node。它没有您要查找的密钥,因此您现在可以获得传递的默认值。0,一个整数。编译到AnyCPU或使用RegistryKey.OpenBaseKey()哦,好吧,我从来没有遇到过被重定向的regedit调用,很高兴知道,事实是,没有编译到AnyCPU,我没有太多选择,因为我不是用framework 4.0+编译的(这正是该函数所需要的,我正在使用3.0。我已经在寻找一种不改变框架的方法了……谢谢。