![]() |
Re: Alle PC-Namen eines Netzwerkes erhalten
Liste der Anhänge anzeigen (Anzahl: 1)
Moin Matze,
so, fertig. Frisch überpoliert ;-) Wie sich das Programm jetzt auf (grössere) Netzwerke auswirkt weiss ich natürlich, mangels Testmöglichkeit nicht, aber abbrechen kann man immer (zur Not mit ESC) Schau's Dir mal an. Der prinzipielle Ablauf
Sollten mehrere IP-Adressen vorhanden sein, kannst Du auch die Bereiche auswählen. Sollte bei einem Rechner, von dem Du genau weisst, dass er vorhanden ist, und einen Namen hat die Meldung kommen, dass der Name nicht ermittelt werden konnte kannst Du abbrechen, dann funktioniert die Methode nicht. Grundsätzlich müsste sich das Programm verhalten wie ein Ping -a |
Re: Alle PC-Namen eines Netzwerkes erhalten
Vielen Dank Christian! :D
Am Dienstag werde ich es ausprobieren, wenn ich Zeit hab. Dann sag ich Bescheid, ob's geklappt hat! |
Re: Alle PC-Namen eines Netzwerkes erhalten
@Christian: Kann ich das auch so einstellen, dass ich eine IP eingebe und er dann von dieser aus hochzählt??
|
Re: Alle PC-Namen eines Netzwerkes erhalten
Moin Matze,
das hab' ich jetzt nicht vorgesehen, aber schau's Dir mal an. Sollte nicht so schwer nachzurüsten sein. |
Re: Alle PC-Namen eines Netzwerkes erhalten
Hi Chris!
Da bin ich wieder, ich hatte endlich die Möglichkeit, dein Programm zu testen und ich muss sagen: Super! :thumb: Es zeigt mir alle Rechner an! Wirklich klasse! Vielen Dank nochmal! :hello: |
Re: Alle PC-Namen eines Netzwerkes erhalten
Moin Matze,
prima, freut mich :bounce1: Und, was hat Dein Lehrer gesagt? ;-) |
Re: Alle PC-Namen eines Netzwerkes erhalten
Der war echt erstaunt! Auf die Idee ist er gar nicht gekommen. Er hatte gemeint, das wär ja schon fast Hacker-mäßig! :mrgreen:
|
Re: Alle PC-Namen eines Netzwerkes erhalten
Moin Matze,
:mrgreen: Dabei hab' ich ja im Prinzip nur gemacht, was ein Ping -a auch macht ;-) Schade, dass Du da nichts mit Admin Rechten machen kannst. Dann könnte man ihm mal von einem anderen Rechner aus zeigen, welche versteckten Freigaben auf seinem Rechner sind ;-) |
Re: Alle PC-Namen eines Netzwerkes erhalten
Ja, das wäre auch echt cool! ;)
Kann ich das irgendwie so umprogrammieren, dass es mir in einer weiteren ListBox, die angemeldeten (eingeloggten) User anzeigt? Das hier: ![]() geht bei mir irgendwie nicht. :( |
Re: Alle PC-Namen eines Netzwerkes erhalten
Moin Matze,
eine Idee hätte ich noch dafür. Probier ich mal aus. |
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. ;)
|
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; |
Re: Alle PC-Namen eines Netzwerkes erhalten
Vielen Dank. Du bist aber schnell! :thumb:
Ich sag dir in den nächsten Tagen Bescheid. |
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. ;-) |
Re: Alle PC-Namen eines Netzwerkes erhalten
OK, Moment, wird gemacht...
|
Re: Alle PC-Namen eines Netzwerkes erhalten
Hi!
Das Programm ist geil! Saubere Leistung! Mfg Sniper-GFX |
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. |
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:
|
Re: Alle PC-Namen eines Netzwerkes erhalten
Zitat:
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 |
Re: Alle PC-Namen eines Netzwerkes erhalten
Moin Assarbad,
Zitat:
Zitat:
|
Re: Alle PC-Namen eines Netzwerkes erhalten
Zitat:
Ein Beispiel wäre RunAs, was ab Windows 2000 im System dabei ist, aber auch schon bei früheren Versionen funktioniert ... oder auch die schnelle Benutzerumschaltung von XP (und Nachfolgern). Ich als Admin logge mich zB manchmal auf einem anderen Rechner ein, um dort etwas zu machen (das ist dann - insofern nicht in einer Domain - auch ein lokaler Logon). Das alles kannst du nicht unterscheiden, da man solche Programme wie RunAs nämlich anweisen kann das komplette Profil (i.e. NTUSER.DAT oder NTUSER.MAN) zu laden ... also Pustekuchen auch mit dieser Methode. Finde dich mal ganz ehrlich damit ab, es geht nicht ;) |
Re: Alle PC-Namen eines Netzwerkes erhalten
Sorry, dass ich ein SOOOOOOOOOO altes Thema nochmal aufgreife, aber hat jemand diese Routine schonmal unter Delphi 2005 getestet die spuckt bei mir genau das hier aus: NIX!
Jemand evtl ne Idee worans liegen kann? LG Alleinherrscher |
Re: Alle PC-Namen eines Netzwerkes erhalten
Korrigiere mal den Quellcode an folgender Stelle
Delphi-Quellcode:
nach
PIP_MASK_STRING = ^PIP_MASK_STRING; // IPTYPES.H
Delphi-Quellcode:
PIP_MASK_STRING = ^IP_MASK_STRING; // IPTYPES.H
|
Re: Alle PC-Namen eines Netzwerkes erhalten
Ich entschuldige mich ebenfalls, wobei es nunmal hier rein passt ;)
Der genannte Fehler ist zwar i.O. bis 2009, aber ab hier gibt es ja diesen Unicode Kram.. Fehler tritt hier auf:
Delphi-Quellcode:
[DCC Fehler] MAIN.pas(214): E2010 Inkompatible Typen: 'Char' und 'AnsiChar'
dwSubnetMask := htonl(inet_addr(PChar(aAddresses[i].sSubnetMask)));
dwIPAddressFrom := htonl(inet_addr(PChar(aAddresses[i].sIpAddress))); und: [DCC Warnung] MAIN.pas(224): W1057 Implizite String-Umwandlung von 'AnsiChar' zu 'string' Edit: Gelöst... pChar => pAnsiChar Dennoch danke. Trotzdem zeigt das Programm unter XP SP2 / Delphi 2009 Professional keine IPs des eigenen Rechners an, es kann also nix gestartet werden... |
AW: Alle PC-Namen eines Netzwerkes erhalten
Danke sehr, der Code funktioniert bei mir super!
Das hat mir sehr weitergeholfen. :spin2: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 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