Tipp 5.24 - Lizenznehmerdaten ermitteln

Wie kann ich die Windows-Lizenznehmerdaten ermitteln?

Mit dieser Funktion können Sie die Windows-Lizenznehmerdaten ermitteln. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.

Api-AufrufeVerwendete Win32-Api-Aufrufe und Typen: GetVersionEx, RegOpenKeyEx, RegQueryValueEx, RegCloseKey - OSVERSIONINFO

Beispiel:

Option Explicit
 
Public Type OSVERSIONINFO
  dwOSVersionInfoSize    As Long
  dwMajorVersion         As Long
  dwMinorVersion         As Long
  dwBuildNumber          As Long
  dwPlatformID           As Long
  szCSDVersion           As String * 128
End Type
 
Public Declare Function GetVersionEx _
    Lib "kernel32" Alias _
    "GetVersionExA" _
    (lpVersionInformation As OSVERSIONINFO) As Long
 
Public Declare Function RegOpenKeyEx _
    Lib "advapi32.dll" Alias _
    "RegOpenKeyExA" _
    (ByVal hKey As Long, _
    ByVal lpSubKey As String, _
    ByVal ulOptions As Long, _
    ByVal samDesired As Long, _
    phkResult As Long) As Long
 
Public Declare Function RegQueryValueEx _
    Lib "advapi32.dll" Alias _
    "RegQueryValueExA" _
    (ByVal hKey As Long, _
    ByVal sValue As String, _
    ByVal lReserved As Long, _
    lType As Long, _
    ByVal sData As String, _
    lcbData As Long) As Long
 
Public Declare Function RegCloseKey _
    Lib "advapi32.dll" _
    (ByVal hKey As Long) As Long
 
Public Sub WinLicenceData( _
           sUser As String, _
           sCompany As String)
  '// -----------------------------------------------------
  '// Methode:   | Windows-Lizenznehmer ermitteln
  '// -----------------------------------------------------
  '// Parameter: | sUser    - Name des Lizenznehmers
  '//            | sCompany - Firma des Lizenznehmers
  '// -----------------------------------------------------
  '// Rückgabe:  | s.o.
  '// -----------------------------------------------------
  '// Beispiel:
  '// -----------------------------------------------------
  '// Dim sUser    As String
  '// Dim sCompany As String
  '// WinLicenceData sUser, sCompany
  '// Debug.Print sUser; " "; sCompany
  '// -----------------------------------------------------
  '// Autor:     | Stefan Kulpa
  '//            | EDV Innovation & Consulting - Dormagen
  '// -----------------------------------------------------
  Const csREG_VERS_9X         As String = _
      "Software\Microsoft\Windows\CurrentVersion"
  Const csREG_VERS_NT         As String = _
      "Software\Microsoft\Windows NT\CurrentVersion"
  Const csREG_OWNER           As String = _
      "RegisteredOwner"
  Const csREG_ORGAN           As String = _
      "RegisteredOrganization"
  Const HKEY_LOCAL_MACHINE    As Long = _
      &H80000002
  Const KEY_QUERY_VALUE       As Long = _
      &H1
 
  Dim sSubKey                 As String
  Dim lResLength              As Long
  Dim lKeyType                As Long
  Dim lRes                    As Long
  Dim lKey                    As Long
  sUser = String(255, 0)
  sCompany = String(255, 0)
  If IsWinNT Then
    sSubKey = csREG_VERS_NT
  Else: sSubKey = csREG_VERS_9X
  End If
  lRes = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _
      sSubKey, 0, KEY_QUERY_VALUE, lKey)
  If lRes = 0 Then
    lResLength = Len(sUser)
    lRes = RegQueryValueEx(lKey, csREG_OWNER, 0, _
        lKeyType, sUser, lResLength)
    sUser = Left(sUser, InStr(sUser, vbNullChar) - 1)
    lResLength = Len(sCompany)
    lRes = RegQueryValueEx(lKey, csREG_ORGAN, 0, _
        lKeyType, sCompany, lResLength)
    sCompany = Left$(sCompany, InStr(sCompany, _
        vbNullChar) - 1)
    Call RegCloseKey(lKey)
  End If
 
End Sub
 
Public Property Get IsWinNT() As Boolean
 
  Const VER_PLATFORM_WIN32_NT As Long = 2
  Dim uOSVer                  As OSVERSIONINFO
  uOSVer.dwOSVersionInfoSize = Len(uOSVer)
  GetVersionEx uOSVer
  IsWinNT = (uOSVer.dwPlatformID = _
      VER_PLATFORM_WIN32_NT)
 
End Property