Получить серийный Windows для XP, Vista и Seven - PullRequest
1 голос
/ 27 июня 2010

С помощью этой функции я получаю лицензионный ключ 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

1 Ответ

1 голос
/ 28 июня 2010

Вместо того, чтобы использовать реестр, я бы посоветовал вам использовать WMI. В частности, класс Win32_OperatingSystem, как описано здесь . Как видно на этой странице, есть свойство под названием SerialNumber.

Эта страница содержит полный пример (с пояснениями), как это сделать.

...