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.
Verwendete 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