![]() |
Share zu Laufwerksbuchstabe finden?
Mit welcher API-Funktion kann man das Share-Verzeichnis bekommen das verwendet wurde um einen Laufwerksbuchstaben zu verbinden?
Also für "X:" das Share "\\ServerName\Share" bekommen. |
Re: Share zu Laufwerksbuchstabe finden?
API-Funktion(en): WNetOpenEnum, WNetEnumResource, WNEtCloseEnum... sh auch Win32 Developers Refernez für weitere Information(en).
Beispiel für die Verwendung findest Du ![]() |
Re: Share zu Laufwerksbuchstabe finden?
Reicht nicht ein einfaches
Delphi-Quellcode:
ExpandUNCFileName('X:\')
|
Re: Share zu Laufwerksbuchstabe finden?
@gammatester: hm, im Prinzip ja...wenn ich denn weiss, wie der Laufwerkbuchstabe heisst...
Die WNet-API-Funktionen zeigen (je nach Parameter) die verwendeten(=aktiven) Netzverbindungen oder die 'gemerkten' und, und... |
Re: Share zu Laufwerksbuchstabe finden?
Zitat:
Zitat:
Aber wieso die Variable cEntries 0 ist, ist mir nicht klar. Zitat:
|
Re: Share zu Laufwerksbuchstabe finden?
Zitat:
das Code-Beispiel aus dem Swissdelphicenter auf das hier verwiesen wird hat einen Bug. Er führt zu einem Specherleck. Der Fehler steckt hier:
Delphi-Quellcode:
Entweder man merkt sich die Startadresse für lpnrDrv oder man decrementiert die Adresse um genau die Anzahl, um die sie incrementiert wurde.
repeat
lpnrDrv := PNETRESOURCE(GlobalAlloc(GPTR, cbBuffer)); dwResult := WNetEnumResource(hEnum, cEntries, lpnrDrv, cbBuffer); if (dwResult = NO_ERROR) then begin s := 'Network drives:'#13#10; for i := 0 to cEntries - 1 do begin if lpnrDrv^.lpLocalName <> nil then s := s + lpnrDrv^.lpLocalName + #9 + lpnrDrv^.lpRemoteName; Inc(lpnrDrv); // hier wird die Adresse Incrementiert end; end else if dwResult <> ERROR_NO_MORE_ITEMS then begin s := s + 'Cannot complete network drive enumeration'; GlobalFree(HGLOBAL(lpnrDrv)); break; end; GlobalFree(HGLOBAL(lpnrDrv)); // hier wird nicht die allociierte Speicheradresse sondern die incrementierte Adresse angegeben until (dwResult = ERROR_NO_MORE_ITEMS); So führt das zu bösen Speicherlecks. Gruß Oki |
Re: Share zu Laufwerksbuchstabe finden?
|
Re: Share zu Laufwerksbuchstabe finden?
Hallo PartyCheck,
ja, das hier listet aber erst mal nur alle eingetragenen Netzwerkverbindungen auf, unabhängig davon, ob eine Verbindung etabliert ist oder nicht. Mein Kommentar bezog sich darauf, das die gepostete Funktion ein Speicherleck verursacht. Gruß oki |
Re: Share zu Laufwerksbuchstabe finden?
Zitat:
|
Re: Share zu Laufwerksbuchstabe finden?
Hi, nicht unbedingt eleganter, aber dieser Code listet auch alle Laufwerksbuchstaben auf die für Netzwerkverbindungen reserviert aber nicht aktiv sind. GetLogicalDrives tut dies nicht.
Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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 by Thomas Breitkreuz