![]() |
Vorhandene PC´s im Netzwerk auflisten
Hallo,
kennt jemand eine Möglichkeit, wie man mit Delphi alle Pc´s, die sich im Netzwerk befinden aufgelistet bekommt und herausfindet, welche davon online sind? Das Netzwerk besteht aus PC´s, wo Windows XP installiert ist und einen Server, wo Windows Server 2003 installiert ist. |
Re: Vorhandene PC´s im Netzwerk auflisten
Wird WINS eingesetzt?
|
Re: Vorhandene PC´s im Netzwerk auflisten
Guck dir mal mein LoggedOn an:
![]() |
Re: Vorhandene PC´s im Netzwerk auflisten
das ist zwar ein tolles programm, aber ich weis jetzt nicht so recht, wie das alles miteinander funktioniert. Könntest du mir mal bitte den Befehl nur für das herausfinden der IP´s sagen.
|
Re: Vorhandene PC´s im Netzwerk auflisten
![]() |
Re: Vorhandene PC´s im Netzwerk auflisten
soll das für delphi sein?
|
Re: Vorhandene PC´s im Netzwerk auflisten
Zitat:
|
DP-Maintenance
Dieses Thema wurde von "mkinzler" von "Die Delphi-IDE" nach "Windows 9x / ME / 2000 / XP / 2003 / Vista" verschoben.
Hat definitiv nichts mit der IDE zu tun |
Re: Vorhandene PC´s im Netzwerk auflisten
Das ist der entscheidende Code für dich:
Delphi-Quellcode:
Die gefundenen Rechner werden dann in einer Objektliste abgelegt.
class function TMachineCollection.GetAllMachines(const Domain: string; ExceptionMode: TExceptionMode):
TMachineCollection; var err : NET_API_STATUS; bufPtr : Pointer; si : Pointer; entriesread : DWORD; totalentries : DWORD; resumehandle : DWORD; pCurrent : PSERVER_INFO_100; i : Integer; Machine : TMachine; Major : Integer; Minor : Integer; begin Result := nil; bufPtr := nil; resumehandle := 0; try err := NetServerEnum(nil, 100, bufPtr, MAX_PREFERRED_LENGTH, entriesread, totalentries, SV_TYPE_NT or SV_TYPE_WORKSTATION or SV_TYPE_SERVER or SV_TYPE_SERVER_NT, PWideChar(WideString(Domain)), resumehandle); if err = NERR_SUCCESS then begin Result := TMachineCollection.Create; pCurrent := bufPtr; for i := 0 to totalentries - 1 do begin Machine := TMachine.Create; Machine.Machine := pCurrent.sv100_name; Machine.IP := Machine.Machine; err := NetWkStaGetInfo(PWideChar(WideString(Machine.Machine)), 101, si); if err = NERR_Success then begin Major := PWKSTA_INFO_100(si)^.wki100_ver_major; Minor := PWKSTA_INFO_100(si)^.wki100_ver_minor; Machine.OS := Machine.OSIdToOSStr(Major, Minor); end; Machine.SetToD(GetRemoteToD(WideString(Machine.Machine))); Result.Add(Machine); Machine.LoggedOnUsers := TLoggedOnUserCollection.GetAllUsers(Machine.Machine, emOff); Inc(pCurrent); end; end else raise ENetAPIError.Create(err); finally NetApiBufferFree(bufPtr); end; end; Hätte man aber auch selber draufkommen könne, wenn man sich den Code mal etwas genauer angeguckt hätte. ;) |
Re: Vorhandene PC´s im Netzwerk auflisten
Zitat:
|
Re: Vorhandene PC´s im Netzwerk auflisten
Aber der Funktionsname sollte doch deutlich machen, was da passiert. ;)
|
Re: Vorhandene PC´s im Netzwerk auflisten
Moin Luckie,
den try/finally-Block solltest Du noch einmal überarbeiten. Der darf erst nach dem erfolgreichen Aufruf von NetServerEnum beginnen. |
Re: Vorhandene PC´s im Netzwerk auflisten
Ah, danke für den Hinweis.
|
Re: Vorhandene PC´s im Netzwerk auflisten
Du brauchst nur einen ARP Request für jede Subnetz IP verschicken. "Hat jemand diese IP"
Dann Antwortet dir jeder PC im LAN mit und ohne aktivierter Firewall (angeschaltet müssen sie schon sein). |
Re: Vorhandene PC´s im Netzwerk auflisten
![]() |
Re: Vorhandene PC´s im Netzwerk auflisten
Ich meine, das es versucht über NetBios "Server" zu finden.
Firewalls neigen dazu, dieses zu filtern. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz