AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Domäne auslesen unter Windows98
Thema durchsuchen
Ansicht
Themen-Optionen

Domäne auslesen unter Windows98

Ein Thema von Ati · begonnen am 23. Jan 2006 · letzter Beitrag vom 23. Jan 2006
Antwort Antwort
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#1

Domäne auslesen unter Windows98

  Alt 23. Jan 2006, 11:16
Hallo zusammen,

ich mache mal lieber ein neues Thema auf, da das alte ja erledigt ist. Ich schreibe also gerade ein Tool wo etliche Systeminformationen ausgelesen werden sollen. Unter anderem ja auch die Domäne. Den Code den ich dafür benutze geht aber nicht unter W98 (hatte Hr. Seehase aber auch gesagt). Wie muß ich diese Funktion denn aufbauen das mein Programm sowohl auf XP als auch auf einem W98-Rechner funktioniert?
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Systeminformationen auslesen auf Xp und W98

  Alt 23. Jan 2006, 11:28
Hm. Nichts sagender Titel und falsche Sparte. Besser wäre: "Domain auslesen unter Windows 98", dann weiß man um was es geht und die Internetsparte.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#3

Re: Systeminformationen auslesen auf Xp und W98

  Alt 23. Jan 2006, 11:34
Grumel. Mea culpa. Dann wäre ich dankbar wenn man das Thema entsprechend verschiebt. Aber ich hoffe mein Problem ist klar geworden. Meine aktuelle Verison läuft auf XP einwandfrei. Wenn ich das Programm unter W98 starte kommt sofort eine Fehlermeldung bezogen auf "Netapi32.dll".
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Systeminformationen auslesen auf Xp und W98

  Alt 23. Jan 2006, 11:45
Ändere den Titel und ich verschiebe es.

Als aller erstes musst du die Funktionen aus der DLL dynmaisch laden, denn du kannst die DLL nicht statisch linken, sondern musst sie zur Laufzeit laden. Am besten nach einer Überprüfung des Betriebssystems:
Code:
if XP then
  LoadDLLNT
else
  DoWin98Stuff
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#5

Re: Domäne auslesen unter Windows98

  Alt 23. Jan 2006, 15:04
So das mit dem Auslesen der Domäne unter W98 habe ich wie folgt gelöst:
Delphi-Quellcode:
function GetComputerWorkgroup: string;
var reg: TNtregistry;
begin
     reg := TNtregistry.create;
     reg.rootkey := HKEY_LOCAL_MACHINE;
     reg.openkey('System\CurrentControlSet\Services\VxD\VNETSUP',true);
     result := reg.readstring('Workgroup');
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(getComputerWorkgroup);

end;
Nur das mit dem dynamischen Einbinden habe ich zwar theoretisch verstanden nur die praktische Umsetzung klappt noch nicht.

Ati
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#6

Re: Domäne auslesen unter Windows98

  Alt 23. Jan 2006, 15:56
Nun gut ich bin ein ganzes Stück weiter. Da ich zum erstenmal mit derartigen Sachen arbeite habe ich jetzt folgenden Code zum dynamischen Einbinden:
Delphi-Quellcode:
ype TcsNetWkstaUserGetInfo = function(
    const reserved : PWChar;
    const level : DWord;
    const bufptr : Pointer
    ) : NET_API_STATUS; stdcall;

type Tnetapibufferfree = function(
     const buffer :pointer
     ) : NET_API_STATUS; stdcall;

function Domaene (const AItems:TStrings):String;
var
  NetWkstaUserGetInfo: TcsNetWkstaUserGetInfo;
  pwuiWork : PWKSTA_USER_INFO_1;
  Handle: THandle;
  netapibufferfree:Tnetapibufferfree;
begin
  Handle := LoadLibrary('netapi32.dll');
  //if Handle <> 0 then begin
  if NetWkstaUserGetInfo(nil,1,@pwuiWork) = NErr_Success then
  begin
    try
     aitems.Add('Domäne: '+WideCharToString(pwuiWork.wkui1_logon_domain));
    finally
    NetApiBufferFree(pwuiWork);
    end;
  end;
  //end;
end;
Das ganze ist noch ohne Unterscheidung der Windowsversion. Beim drücken des Buttons soll die Funktion wie folgt aufgerufen werden:
Domaene(Listbox1.items); Dies ruft jetzt aber eine Fehlermeldung auf. Genauer gesagt eine Zugriffsverletzung. Wie oder was muß ich ändern?

Ati
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Domäne auslesen unter Windows98

  Alt 23. Jan 2006, 16:21
Moin Ati,

Du brauchst ja auch noch die Funktion:

(Achtung: Gross-/Kleinschreibung muss beim Funktionsnamen beachtet werden)
    NetWkstaUserGetInfo := GetProcAddress(Handle,'NetWkstaUserGetInfo'); Ausserdem solltest Du anschliessend noch prüfen, ob das funktioniert hat, bevor Du es benutzt:

if @NetWkstaUserGetInfo <> nil then...
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#8

Re: Domäne auslesen unter Windows98

  Alt 23. Jan 2006, 16:33
Delphi-Quellcode:
function Domaene (const AItems:TStrings):String;
var
  NetWkstaUserGetInfo: TcsNetWkstaUserGetInfo;
  pwuiWork : PWKSTA_USER_INFO_1;
  Handle: THandle;
  NetApiBufferFree:TNetApiBufferFree;
begin

  Handle := LoadLibrary('netapi32.dll');
  if Handle <> 0 then begin
  NetWkstaUserGetInfo := GetProcAddress(Handle,'NetWkstaUserGetInfo');
  if @NetWkstaUserGetInfo <> nil then begin
  if NetWkstaUserGetInfo(nil,1,@pwuiWork) = NErr_Success then
  begin
    try
     aitems.Add('Domäne: '+WideCharToString(pwuiWork.wkui1_logon_domain));
    finally
    NetApiBufferFree(pwuiWork);
    end;
  end;
  end;
  end;
end;
Habe es geändert so wie Du gesagt hast und trotzdem kommt noch die Fehlermeldung.
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Ati

Registriert seit: 16. Okt 2003
Ort: Gelsenkirchen
406 Beiträge
 
Delphi 3 Professional
 
#9

Re: Domäne auslesen unter Windows98

  Alt 23. Jan 2006, 16:50
Hab es geschafft. Was man für "NetWkstaUserGetInfo" machen muß, muß man schließlich auch für "NetApiBufferFree" machen. Als ich das erledigt hatte kam auch keine Fehlermeldung mehr.
Ich weiß das ich nichts weiß

Sokrates
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz