Entwickler-Ecke
Windows API - "Lizenznehmer" von Windows auslesen
RichMan - Sa 01.02.03 17:21
Titel: "Lizenznehmer" von Windows auslesen
Hi Leute!
Wie kann ich den Namen und die Firma des Lizenznehmers von Windows (z.B. im Windows Explorer zu erfahren: Menü "?" -> Menüpunkt "Info") auslesen!?
Vielen Dank schonmal,
RichMan
matze - Sa 01.02.03 19:24
der wird bestimmt in der registry drinne stehn !! such mal !
RichMan - Sa 01.02.03 21:39
LOL, auf die Idee bin ich gar nicht gekommen... Thx. Aber ich bin mir ziemlich sicher, dass es eine API-Funktion zum Auslesen der Daten gibt... naja egal.
matze - So 02.02.03 17:22
schon möglich, ich kenne die aber nicht (such mal im WinSDK)
ansonmsten ist das auselsen aus der Registry auch dich sooooo ein act oder ??
Delete - So 02.02.03 18:42
| RichMan hat folgendes geschrieben: |
| Aber ich bin mir ziemlich sicher, dass es eine API-Funktion zum Auslesen der Daten gibt... |
Meinst du? Falls du die Info-Box meinst, hast du recht: dafür gibt´s tatsächlich einen Befehl
Falls du nur an den Infos interessiert bist, solltest du die Registry öffnen (nur lesend, wenn´s geht), HKEY_LOCAL_MACHINE aufsuchen und mal unter "Software\Microsoft\Windows\CurrentVersion" nachschauen. Wie matze sagte:
| Zitat: |
| ansonmsten ist das auselsen aus der Registry auch dich sooooo ein act oder ?? |
Hm, :? Na ja ... matze ... ´s is´ aber noch verständlich. :wink:
MrKnogge - Di 04.02.03 23:25
Hi
Probier mal das:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68:
| uses ..Registry;
. . .
function currentuser: string; var Name: array [0..255] of Char; buffer: DWORD; begin buffer := SizeOf(Name); GetUserName(Name, buffer); Result := StrPas(Name); end;
function GetRegisteredOwner: String; var vi: TOSVersionInfo; reg: TRegistry; begin result:=''; reg := TRegistry.Create; try vi.dwOSVersionInfoSize := sizeof(vi); getversionex(vi); reg.RootKey := HKEY_LOCAL_MACHINE; if (vi.dwPlatformId = VER_PLATFORM_WIN32_NT) then reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion', false) else reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion', false); result := reg.ReadString('RegisteredOwner'); finally reg.Free; end; end;
function GetRegisteredOrganization: String; var vi: TOSVersionInfo; reg: TRegistry; begin result:=''; reg := TRegistry.Create; try vi.dwOSVersionInfoSize := sizeof(vi); getversionex(vi); reg.RootKey := HKEY_LOCAL_MACHINE; if (vi.dwPlatformId = VER_PLATFORM_WIN32_NT) then reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion', false) else reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion', false); result := reg.ReadString('RegisteredOrganization'); finally reg.Free; end; end;
// Aktueller Windows-Benutzer Label1.Caption := currentuser;
// Bei Windows angegebener Name Label2.Caption := GetRegisteredOwner;
// Bei Windows angegebene Orhanisation Label3.Caption := GetRegisteredOrganization; |
Delete - Mi 05.02.03 10:30
1. Ich hätte das Auslesen von Lizenznehmer und Firma zusammengefasst. Es gibt ja auch var-Parameter, die man dem Funktionskopf übergeben kann, etwa:
Quelltext
1:
| procedure GetUserInfo(out RegisteredUser, RegisteredOrg: string); |
Auf diese Weise reduziert man den Zugriff auf die Registry auf das einmalige Öffnen, Auslesen und Schließen.
2. "GetVersionEx" ist eigentlich nur bei Konsolen- oder NonVCL-Projekten notwendig. In den meisten VCL-Programmen dürfte die Unit SysUtils benutzt werden, und die stellt die Variable
zur Verfügung, der wie "vi.dwPlatformId" verglichen wird. Aber das würde ich nicht mal als Fehler anrechnen; ist nur doppelt gemoppelt, weil "GetVersionEx" auch im INIT-Teil der SysUtils aufgerufen wird.
3. Auch kein großes Problem (zumindest hier nicht, dank benutztem Ressourcenschutz), aber "OpenKey" ist eigentlich eine Bool-
Funktion. Will sagen: sie bietet eine schöne Kontrolle, ob ein Schlüssel geöffnet werden konnte oder nicht.
4. Zum Schluss das echte Problem: User mit eingeschränkten oder Benutzerrechten sehen unter NT, 2000 und XP wahrscheinlich ... nichts. Wundert euch also bitte nicht, wenn euch Lizenznehmer und Firma nicht angezeigt werden, wenn ihr keine Admin-Rechte habt.
Natürlich lässt sich auch dieses Problem in den Griff bekommen. Man muss nur wissen, dass die Registry standardmäßig mit vollen Zugriffsrechten geöffnet wird. Und das geht insbesondere beim Schlüssel HKEY_LOCAL_MACHINE und eingeschränkten Benutzerrechten gründlich in die Hose.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!