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