Delphi-PRAXiS
Seite 6 von 7   « Erste     456 7      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Alle PC-Namen eines Netzwerkes erhalten (https://www.delphipraxis.net/6213-alle-pc-namen-eines-netzwerkes-erhalten.html)

Matze 17. Sep 2003 17:17

Re: Alle PC-Namen eines Netzwerkes erhalten
 
Das wäre echt cool! Aber falls du keine Zeit hast, dann musst du es natürlich nicht machen. ;)

Christian Seehase 17. Sep 2003 17:33

Re: Alle PC-Namen eines Netzwerkes erhalten
 
Moin Matze,

probier mal, ob das hier bei euch funktioniert.

Delphi-Quellcode:
type
  NET_API_STATUS = DWORD;
  PWKSTA_USER_INFO_0 = ^WKSTA_USER_INFO_0;
  WKSTA_USER_INFO_0 = packed record
    wkui0_username : PWChar;
  end;

function NetWkstaUserEnum(
    const servername  : PWChar;
    const level       : DWord;
    const bufptr      : Pointer;
    const prefmaxlen  : DWord;
    const entriesread : PDWord;
    const totalentries : PDWord;
    const resumehandle : PDWord
    ) : NET_API_STATUS; stdcall; external 'netapi32.dll';

function NetApiBufferFree(
    const Buffer : Pointer
    ) : NET_API_STATUS; stdcall; external 'netapi32.dll';

const
  NERR_Success        = 0;
  MAX_PREFERRED_LENGTH = DWORD(-1);

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

var
  pwuiWork      : PWKSTA_USER_INFO_0;
  pwuiRead      : PWKSTA_USER_INFO_0;
  dwEntriesRead : DWORD;
  dwTotalEntries : DWORD;
  i             : integer;
  dwResult      : DWORD;
  pwsServer     : PWideChar;

begin
  pwsServer := '';
  dwResult := NetWkstaUserEnum(pwsServer,0,@pwuiRead,MAX_PREFERRED_LENGTH,@dwEntriesRead,@dwTotalEntries,nil);
  if dwResult <> NERR_SUCCESS then begin
    ShowMessage(SysErrorMessage(dwResult)+#13#10+IntToStr(dwResult));
  end;
  try
    pwuiWork := pwuiRead;
    for i := 1 to dwEntriesRead do begin
      ShowMessage(pwuiWork.wkui0_username);
      inc(pwuiWork);
    end;
  finally
    NetApiBufferFree(pwuiRead);
  end;
end;

Matze 17. Sep 2003 17:38

Re: Alle PC-Namen eines Netzwerkes erhalten
 
Vielen Dank. Du bist aber schnell! :thumb:
Ich sag dir in den nächsten Tagen Bescheid.

Christian Seehase 17. Sep 2003 17:39

Re: Alle PC-Namen eines Netzwerkes erhalten
 
Moin Matze,

für weiteres in dieser Richtung, wäre es dann aber angebracht einen neuen Thread zu eröffnen, denn das hat mit den Rechnern im Netz absolut nichts mehr zu tun. ;-)

Matze 17. Sep 2003 17:44

Re: Alle PC-Namen eines Netzwerkes erhalten
 
OK, Moment, wird gemacht...

Sniper-GFX 9. Okt 2003 19:52

Re: Alle PC-Namen eines Netzwerkes erhalten
 
Hi!
Das Programm ist geil!

Saubere Leistung!

Mfg
Sniper-GFX

Assarbad 9. Okt 2003 23:51

Re: Alle PC-Namen eines Netzwerkes erhalten
 
Benutzer kannst du nur als Admin zuverlässig auflisten. Bzw als jemadn, der Rechte in der Remote-Registry hat (zB mein LoggedOn2 macht das so).

Christians Methode ist weit von zuverlässig entfernt. Leider hat sich MS damit wohl eher so einen Scherz erlaubt. Scheint ne Art Fake-API zu sein. Jedenfalls erreicht man das gleiche, wenn man bestimmte Shares auf einem Fremdrechner auflistet (nämlich die Sessions eines Benutzers).

Leider sind die Sessions manchmal Zombies und manchmal sind User eingeloggt, aber NetEnum... listet nix. Ergo ... Mist :-/

BTW: Wenn das obige hackermäßig war, was ist denn dann TRACERT ... ROFL.

Christian Seehase 10. Okt 2003 11:33

Re: Alle PC-Namen eines Netzwerkes erhalten
 
Moin Assarbad,

es ging hierbei vermutlich nicht um die Zeilen hier weiter oben auf der Seite, sondern um das Attachement von der vorigen ;-)
Die Nummer mit der Registry hab' ich schon lange auf dem Zettel. Mal sehen, wann ich endlich mal dazu komme.
Für eine erfolreiche Ausführung von RegConnectRegistry brauchst Du allerdings auch entsprechende Zugriffsrechte auf den Remote Rechner. Als "normaler" User gibt's da nur ein Access Denied.

Das NetWkstaUserEnum nicht so das gelbe vom Ei ist, ist mit Sicherheit richtig, wie ich inzwischen feststellen musste, denn auch "NET SEND username" benutzt diese Funktion nicht :?
(allerdings auch nicht die Registry-Methode)

Zitat:

Zitat von Assarbad
Wenn das obige hackermäßig war, was ist denn dann TRACERT ... ROFL.

Mal ehrlich: Was können die Lehrer dafür, die manchmal arg ins rudern kommen, um auch nur einen kleinen Vorsprung vor der Masse ihrer Schüler zu haben. Ich bin zwar schon zu lange da raus um es aus eigener Anschauung wissen zu können, aber das jemand Informatik auf Lehramt studiert wäre mir neu.

Assarbad 10. Okt 2003 11:50

Re: Alle PC-Namen eines Netzwerkes erhalten
 
Zitat:

Für eine erfolreiche Ausführung von RegConnectRegistry brauchst Du allerdings auch entsprechende Zugriffsrechte auf den Remote Rechner.
Stimmt. Aber das sollte eigentlich auch genauso sein. Differenzieren kann man im Übrigen nicht zwischen interaktivem und anderen Benutzern. Eventuell mit nem API-Hook auf WINLOGON.EXE, aber das ist dann wieder stark versionsabhängig.

Ich bin dafür, ein Forum aufzumachen, in dem Info-Lehrer, welche in Delphi unterrichten müssen (mit Alterskontrolle) von Nicht-Schülern supported werden ;) ... laßt den Kampf beginnen :-D

Christian Seehase 10. Okt 2003 12:02

Re: Alle PC-Namen eines Netzwerkes erhalten
 
Moin Assarbad,

Zitat:

Zitat von Assarbad
Differenzieren kann man im Übrigen nicht zwischen interaktivem und anderen Benutzern.

Vielleicht mache ich ja einen Denkfehler, aber wenn ich prüfe, welche NTUSER.DAT gesperrt ist, unter Berücksichtigung von Spezialaccounts (z.B. SMS-Service Account für Installationen), dann müsste ich eigentlich den Profilpfad des Users haben, der gerade angemeldet ist (oder eben auch keiner).

Zitat:

Zitat von Assarbad
Ich bin dafür, ein Forum aufzumachen, in dem Info-Lehrer, welche in Delphi unterrichten müssen (mit Alterskontrolle) von Nicht-Schülern supported werden

Solchen Support hab' ich sogar schon mal gegeben, und ich bleibe bei der Aussage, dass die Lehrer eigentlich nicht einmal was dafür können, wenn sie diesen Support brauchen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr.
Seite 6 von 7   « Erste     456 7      

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