Alle PC-Namen eines Netzwerkes erhalten
gibt es im delphi eine möglichkeit, eine liste mit allen ans netzwerk angeschlossene PCs zu erhalten?
|
Moin Illuminator,
such' mal hier noch WNetEnumResource. Das hatten wir schon. |
Hiho ...
hier hab ich maln Code dafür:
Code:
type
PNetResourceArray = ^TNetResourceArray; TNetResourceArray = array[0..100] of TNetResource; function CreateNetResourceList(ResourceType: DWord; NetResource: PNetResource; out Entries: DWord; out List: PNetResourceArray): Boolean; var EnumHandle: THandle; BufSize: DWord; Res: DWord; begin Result := False; List := Nil; Entries := 0; if WNetOpenEnum(RESOURCE_GLOBALNET, ResourceType, 0, NetResource, EnumHandle) = NO_ERROR then begin try BufSize := $4000; // 16 kByte GetMem(List, BufSize); try repeat Entries := DWord(-1); FillChar(List^, BufSize, 0); Res := WNetEnumResource(EnumHandle, Entries, List, BufSize); if Res = ERROR_MORE_DATA then begin ReAllocMem(List, BufSize); end; until Res <> ERROR_MORE_DATA; Result := Res = NO_ERROR; if not Result then begin FreeMem(List); List := Nil; Entries := 0; end; except FreeMem(List); raise; end; finally WNetCloseEnum(EnumHandle); end; end; end; procedure ScanNetworkResources(ResourceType, DisplayType: DWord; List: TStrings); procedure ScanLevel(NetResource: PNetResource); var Entries: DWord; NetResourceList: PNetResourceArray; i: Integer; begin if CreateNetResourceList(ResourceType, NetResource, Entries, NetResourceList) then try for i := 0 to Integer(Entries) - 1 do begin if (DisplayType = RESOURCEDISPLAYTYPE_GENERIC) or (NetResourceList[i].dwDisplayType = DisplayType) then begin List.AddObject(NetResourceList[i].lpRemoteName, Pointer(NetResourceList[i].dwDisplayType)); end; if (NetResourceList[i].dwUsage and RESOURCEUSAGE_CONTAINER) <> 0 then ScanLevel(@NetResourceList[i]); end; finally FreeMem(NetResourceList); end; end; begin ScanLevel(Nil); end;
Code:
procedure TForm1.BitBtn2Click(Sender: TObject);
begin ScanNetworkResources(RESOURCETYPE_DISK, RESOURCEDISPLAYTYPE_SERVER, ListBox1.Items); end; hoffe es klappt bei dir! Bei mir klappts zumindest! ^^ cu Trouble_Maker |
Re: Alle PC-Namen eines Netzwerkes erhalten
Hi zusammen!
Ich habe ein Pronlem... Mein Informatiklehrer hat gemeint, dass keiner aus unserer Klasse das schaft, sich die Netzwerk-PCs unseres Internetraums in einer ListBox anzeigen zu lassen. Doch ich habe gesagt, dass ich's schaffe (blöd von mir!) Jetzt habe ich den obigen Code verwendet, aber mein Programm listet mir nur folgendes auf: \\EASYSERVER, obwohl mind. 10 PC angeschaltet sind. Was mache ich falsch?? :x Gruß Matze |
Re: Alle PC-Namen eines Netzwerkes erhalten
Moin Matze,
ich hab' den Code eben mal ausprobiert, der tut's einwandfrei. Kannst Du aus Windows heraus die anderen Rechner in der Netzwerkumgebung sehen? Wenn für die Workstations das Browsing abgeschaltet ist, werden sie dort nämlich auch nicht angezeigt. |
Re: Alle PC-Namen eines Netzwerkes erhalten
Hi!
Wenn ich an die Benutzer per Net Send Befehle schicke, dann geht das, falls du das meinst. Gruß Matze |
Re: Alle PC-Namen eines Netzwerkes erhalten
Moin Matze,
nein, das meine ich nicht. Das die Rechner mit ihren Namen erreichbar sind, hat nichts damit zu tun, ob man sie in der Netzwerkumgebung sehen kann oder nicht. Das ist so ähnlich wie mit den versteckten Freigaben. Sie sind da, man kann sie sich verbinden, bzw. darauf zugreifen, aber im Explorer sehen kann man sie nicht. Wenn Du in den Explorer gehst, Netzwerkumgebung, und da mal schaust (Netzwerkumgebung, dann in Microsoft Windows-Netzwerk), müssten die Domänen/Arbeitsgruppen zu sehen sein, soweit verfügbar, und darin wieder die einzelnen Rechner. Deshalb meine Frage: Sind die Rechner da zu sehen? Wenn nicht, hat sich euer Lehrer nämlich eine "kleine Gemeinheit" einfallen lassen ;-) |
Re: Alle PC-Namen eines Netzwerkes erhalten
Ich bin grad nicht in der Schule, aber ich glaube in der Netzwerkumgebung sind die Rechner nicht aufgeführt. Heißt das, mein Lehrer hatte Recht, als er sagte, das könne niemand von uns proggen?
|
Re: Alle PC-Namen eines Netzwerkes erhalten
Moin Matze,
wenn sie da nicht zu sehen sind, melden sie sich nicht beim Browserdienst (hat nichts mit dem Webbrowser zu tun). Dann dürfte es mit den WNetxxx Funktionen nicht machbar sein. Aber es gibt auch noch andere ;-) Auf welchem Betriebbsystem soll das Programm laufen? |
Re: Alle PC-Namen eines Netzwerkes erhalten
Na ja, es gäbe immernoch die BruteForce-Methode. Also alle erdenklichen Namen bilden und einen Verbindungsversuch starten. Könnte allerdings ein paar Tage dauern :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 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