![]() |
Alle Arbeitsgruppen, alle Rechner und dann alle freigaben?
Hallo!
also ich möchte mit Hellwalker gern ein Programm schreiben dass das NEtzwerk nach Arbeitsgruppen durchsucht, dann alle Rechner finded und schließlich alle Freigaben aufließtet. Dass ich am Ende alle Rechner-Freigaben nach Dateien Durchstöbern kann. Meines Wissens müsste dass ja mit ein paar API Befehlen möglich sein... bräuchte ein hinweiße des Handlings - Theoretisch funktionierts ja - hab au kein problem mit rekursiver Programmierung. Lediglich happerts bei mir an der Geringen API kenntnis. also - bin gespannt auf Antworten thx |
Moin Zerolith,
da kommen für Dich wohl am ehesten die Funktionen WNetOpenEnum, WNetEnumResource und WNetCloseEnum in Frage. Eigentlich müsstest Du zu denen hier auch Beispiele finden. |
aha ? :shock:
:| kein plan - -n paar bespiele - find nix passendes mit der boardsuche... schau mal morgen was is ne gute Quelle? MSDN? PSDK? DelphiHilfe? |
Zitat:
Suche im Forum: Schau mal ![]() |
Was ist Hellwalker?
Noch nie gehört! |
Moin fossi,
Zitat:
|
Thx @ Christian
werd mir das mal zu gemüte führen cya |
Hier mal als Basis:
Delphi-Quellcode:
Dieser Code listet alle Rechner im Netz auf.
function TThreadGetComputer.RechnerInWG(lpnr: PNetResource): Boolean;
procedure AddComputerToList(Value: TNetResource); begin strRemoteName := Value.lpRemoteName; if Value.dwDisplayType <> RESOURCEDISPLAYTYPE_SERVER THEN Exit; ListBox.Items.Add(strRemoteName); end; const // RESOURCE_CONNECTED RESOURCE_CONTEXT RESOURCE_GLOBALNET RESOURCE_REMEMBERED c_dwScope = RESOURCE_GLOBALNET; // RESOURCETYPE_ANY RESOURCETYPE_DISK RESOURCETYPE_PRINT c_dwType = RESOURCETYPE_DISK; var cbBuffer: DWORD; hEnum, dwResult, dwResultEnum : DWORD; lpnrLocal : array [0..16384 div SizeOf(TNetResource)] of TNetResource; i : Integer; cEntries : Longint; begin // // basiert auf Microsoft Beispiel "Enumerating Network Resources" in C++ // // [url]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wnet/networks_77sj.asp[/url] // cbBuffer := 16384; centries := -1; dwResult := WNetOpenEnum( c_dwScope, c_dwType, 0, // 0 = All resources lpnr, hEnum); if dwResult <> NO_ERROR then begin Result := False; // Fehlerbehandlung('Fehler bei WNetOpenEnum (%d)',[dwResult]); Exit; end; FillChar( lpnrLocal, cbBuffer, 0 ); dwResultEnum := WNetEnumResource(hEnum, DWORD(cEntries), @lpnrLocal, cbBuffer); if dwResultEnum = NO_ERROR then begin // dwResultEnum = NO_ERROR for i := 0 to cEntries - 1 do begin AddComputerToList(lpnrLocal[i]); if (c_dwScope = RESOURCE_GLOBALNET) AND (RESOURCEUSAGE_CONTAINER = (lpnrLocal[i].dwUsage AND RESOURCEUSAGE_CONTAINER)) AND (Not Terminated) then RechnerInWG(@lpnrLocal[i]); end; end // dwResultEnum = NO_ERROR else begin // dwResultEnum <> NO_ERROR IF dwResultEnum <> ERROR_NO_MORE_ITEMS THEN begin Result := False; // Fehlerbehandlung (Format('Fehler bei WNetEnumResource (%d)',[dwResultEnum])); Exit; end; end; // dwResultEnum <> NO_ERROR dwResult := WNetCloseEnum(hEnum); if dwResult <> NO_ERROR then begin Result := False; // Fehlerbehandlung (Format('Fehler bei WNetCloseEnum (%d)',[dwResult])); Exit; end; Result := True; end; |
ehm - was muss ich der Funktion übergeben?
|
NIL
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:45 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