2013-11-15 2 views
0

Я пытаюсь получить серийный номер Windows в Windows 7 с помощью моего приложения VB6. Однако он всегда не может его восстановить.Не удалось получить серийный номер Windows в Windows 7

SScript.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductId") 

возвращает следующее сообщение об ошибке:

Unable to open registry key "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductId" for reading. 

В Win XP, он будет успешным, чтобы получить серийный номер. Я не знаю, запретила ли Windows 7 приложение VB6 получать серийный номер Windows.

Пожалуйста, помогите. Спасибо!

+0

Windows 7 32bit или 64? –

ответ

2

Это своеобразно не так ли? Попробуйте добавить эту константу к вашим делкартам и ИЛИ значение для открытого вызова реестра. В ответе KEY_WOW64_32KEY and KEY_WOW64_64KEY есть очень хорошее объяснение.

Private Const KEY_WOW64_64KEY As Long = &H100& '32 bit app to access 64 bit hive 

Private Function GetWindowsProductId() As String 
    Dim strReturn As String 
    Dim strBuffer As String 
    Dim lngType As Long 
    Dim lngBufLen As Long 
    Dim lngRst As Long 
    Dim hKeyHandle As Long 

    lngRst = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion", 0, KEY_READ Or KEY_WOW64_64KEY, hKeyHandle) 

    If hKeyHandle <> 0 Then 
     strBuffer = String(255, vbNullChar) 
     lngBufLen = Len(strBuffer) 
     lngRst = RegQueryValueEx(hKeyHandle, "ProductId", ByVal 0&, lngType, ByVal strBuffer, lngBufLen) 
     If lngRst = 0 Then 
      If lngType = REG_SZ Then 
       If lngBufLen > 0 Then 
        strReturn = Left$(strBuffer, lngBufLen - 1) 
       Else 
        strReturn = "nothing was returned" 
       End If 
      Else 
       strReturn = "there was an error" 
      End If 
     ElseIf lngRst = 2 Then  'the key does not exist 
      strReturn = "the key was not found" 
     Else 'if the return is non-zero there was an error 
      strReturn = "There was an error " & CStr(lngRst) & " reading the key" 
     End If 
    End If 

    GetWindowsProductId = strReturn 

End Function 
+0

Благодарим вас за ответ! – user2051823

Смежные вопросы