1

我正在使用此功能检索 Windows XP 许可证密钥,但它不适用于 Vista 和 Seven。如何获得这两个 Windows 版本的许可证密钥?

Public Function sGetXPKey() As String
    Dim result As String = String.Empty

    Dim RegKey As RegistryKey = _
    Registry.LocalMachine.OpenSubKey("Software\Microsoft\Windows NT\CurrentVersion", False)
    Dim bytDPID() As Byte = RegKey.GetValue("DigitalProductID")
    Dim bytKey(14) As Byte
    Array.Copy(bytDPID, 52, bytKey, 0, 15)
    Dim strChar As String = "BCDFGHJKMPQRTVWXY2346789"
    Dim strKey As String = ""

    For j As Integer = 0 To 24
        Dim nCur As Short = 0
        For i As Integer = 14 To 0 Step -1
            nCur = CShort(nCur * 256 Xor bytKey(i))
            bytKey(i) = CByte(Int(nCur / 24))
            nCur = CShort(nCur Mod 24)
        Next
        strKey = strChar.Substring(nCur, 1) & strKey
    Next

    For i As Integer = 4 To 1 Step -1
        strKey = strKey.Insert(i * 5, "-")
    Next

    Return strKey
End Function
4

1 回答 1

1

我建议您使用 WMI,而不是使用注册表。特别是这里Win32_OperatingSystem描述的类。从该页面上可以看出,有一个名为.SerialNumber

页面包含有关如何执行此操作的完整示例(带有说明)。

于 2010-06-28T07:50:13.473 回答