Autor Beitrag
RichMan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 20



BeitragVerfasst: Sa 01.02.03 17:21 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Sa 01.02.03 19:24 
der wird bestimmt in der registry drinne stehn !! such mal !

_________________
In the beginning was the word.
And the word was content-type: text/plain.
RichMan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 20



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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 ??

_________________
In the beginning was the word.
And the word was content-type: text/plain.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ausblenden Quelltext
1:
ShellAbout					

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 76

Win XP, Win 7
Delphi 7 Prof, Delphi 2005 PE, C# (VS 2008)
BeitragVerfasst: Di 04.02.03 23:25 
Hi

Probier mal das:

ausblenden volle Höhe 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;

_________________
MfG MrKnogge
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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:
ausblenden 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
ausblenden Quelltext
1:
Win32Platform					

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.