![]() |
Netzwerklaufwerk verbinden/trennen
Hallo,
wie kann ich ein Netzwerklaufwerk von einem Delphi-Programm aus verbinden bzw. trennen, ohne den net use Befehl benutzen zu müssen. Es soll nach dem Druck auf einen entsprechenden Button der Vorgang ohne weiteren Dialog durchgeführt werden ? Günther |
Re: Netzwerklaufwerk verbinden/trennen
|
Re: Netzwerklaufwerk verbinden/trennen
2 Dumme ein Gedanke:
Ich habe gerade nach Netzlaufwerk gesucht, weil ich GENAU das gleiche machen will und habe sowas "triviales" nicht gefunden. Da steht, wie man das Netzwerk mappt, die Dateien runterläd... Aber nicht, wei man ganz normal ein Netzlaufwerk mit einem Benutzername+Passwort verbindet (böse) Wollte gerade auch einen neuen Thread erstellen :-) |
Re: Netzwerklaufwerk verbinden/trennen
Moin Zusammen,
vielleicht helfen dann die Suchbegriffe [dp]WNetAddConnection*[/dp] und/oder [dp]WNetCancelConnection*[/dp] weiter. |
Re: Netzwerklaufwerk verbinden/trennen
Delphi-Quellcode:
Aufrufbeispiel:
function NetzlaufwerkVerbinden(Laufwerk: string; Pfad: string;
Username: string; Password: string; RestoreAtLogon: Boolean): DWORD; var NetResource: TNetResource; dwFlags: DWORD; begin with NetResource do begin dwType := RESOURCETYPE_DISK; lpLocalName := PChar(Laufwerk); lpRemoteName := PChar(Pfad); lpProvider := nil; end; if (RestoreAtLogon) then dwFlags := CONNECT_UPDATE_PROFILE else dwFlags := 0; Result := WNetAddConnection2(NetResource, PChar(Password), PChar(Username), dwFlags); end;
Delphi-Quellcode:
[edit=Luckie]Neu gespeichert, wegen Syntaxhighlightning. Mfg, Luckie[/edit]
if (NetzlaufwerkVerbinden('X:', '\\NTSERVER\DATEN',
'Bjoern', '', False) = 0) then ShowMessage('OK') else ShowMessage('Fehler!'); |
Re: Netzwerklaufwerk verbinden/trennen
Hallo,
vielen Dank für die Antwort. Das Verbinden klappt mit dem beigelegten Quellcode perfekt und auch viel schneller als mit net use in einer versteckten Dos-Box. In einer anderen Antwort wurde auf die Funktion wnetcancelconnection hingewiesen. Leider liefert die Suchmaschine keine Anwort. Weiß jemand, wie diese Funktion eingesetzt wird ? Günther |
Re: Netzwerklaufwerk verbinden/trennen
|
Re: Netzwerklaufwerk verbinden/trennen
Hallo,
vielen Dank, ich habe die entsprechende Funktion gefunden und sie funktioniert. Günther |
Re: Netzwerklaufwerk verbinden/trennen
Hallo,
woran kann es liegen, wenn trotz kopieren in den Quelltext und Anpassung des Netzwerkpfades ein "Fehler!" angezeigt bekommt... Gruß Thomas |
Re: Netzwerklaufwerk verbinden/trennen
Gute Frage, die Antwort liefert:
Delphi-Quellcode:
ShowMessage(SysErrorMessage(NetzlaufwerkVerbinden(...)));
|
Re: Netzwerklaufwerk verbinden/trennen
Der Fehler ist, dass der Netzwerkpfad nicht gefunden wurde. Aber das kann gar nicht sein... Denn mein PC heißt Thomas und der freigegebene Ordner DATEN.
Soll heißen: \\Thomas\DATEN Gruß Thomas |
Re: Netzwerklaufwerk verbinden/trennen
Moin Thomas,
bist Du sicher, dass nicht nur der Ordner, sondern auch die Freigabe "Daten" heisst? |
Re: Netzwerklaufwerk verbinden/trennen
Ja, da bin ich mir sicher...
Ich habe auch irgendwie das Gefühl, als wäre das Netzwerk in meinem XP generell im A****. Eventuell sollte ich mal neu installieren. Oder kann man die Netzwerk-Komponenten "neu-installieren"? Gruß Thomas |
Re: Netzwerklaufwerk verbinden/trennen
Muss den doch schon relativ alten Beitrag nocheinmal aufgreifen.....
Ich versuche via WNetAddConnection2 von einem Win98-PC auf eine Linux-Kiste zuzugreifen. Unter XP funktioniert alles, unter Win98 nicht. Gibt es da irgendwelche Kombatibilitätsprobleme bzw. weiß jemand eine Alternative zu WNetaddConnection2, welch auf unter 98 funzt? Vielen Dank für eure Hilfe MFG Steffen |
Re: Netzwerklaufwerk verbinden/trennen
was heißt "funktioniert nicht"? Welchen Fehler gibt die Funktion zurück?
|
Re: Netzwerklaufwerk verbinden/trennen
Mmmh, mein Fehler...
Wie kann ich den den Rückgabewert von WNetConnection2 ausgeben? habe es als integer versucht, was mit "85" für mich keinen Sinn macht. MFG Steffen |
Re: Netzwerklaufwerk verbinden/trennen
Les doch einfach mal in der Hilfe:
Zitat:
Und wenn du nur den nummerischen Wert hast, dann kannst du ihn auch in der Hilfe unter den SystemErrorCodes nachschlagen. 85 entspricht ERROR_ALREADY_ASSIGNED und das bedeutet: "The local device name is already in use.". IOder du gibst in der Konsole ein:
Code:
und bekommst dann als Ausgabe:
net helpmsg 85
Code:
Oder du nimmst die Delphi Funktion
Der lokale Gerätename wird bereits verwendet.
![]() |
Re: Netzwerklaufwerk verbinden/trennen
Hallo und Danke für die Rückmeldung...
Die 85 war das Ergebnis auf meinem XP-PC. (Dort war das LW schon verbunden) Löse ich die Verbindung vorher, klappt alles (NO_ERROR ->0). Das gleiche Programm unter W98 bringt Zugriff verweigert ->5 Sendet die Funktion unter W98 evtl. nicht User UND Passwort an den Empfänger? W98 unterstützt meines Wissens nach die ganze Sache nur eingeschränkt. Könnte es sein, dass ich mindestens als der entsprechende User angemeldet sein muß? MFG Steffen |
Re: Netzwerklaufwerk verbinden/trennen
Möchte das Thema dann doch nocheinmal aufgreifen:
So wie es aussieht, sendet Win98 den neuen Benutzernamen nicht mit. Daher auch die Fehlermeldung "Zugriff verweigert". Ist es irgendwie möglich, auch unter Win98 einen anderen Benutzernamen für die Anmeldung auf einem anderen (in diesem Fall Linux) PC zu verwenden? MFG Steffen |
AW: Netzwerklaufwerk verbinden/trennen
Hallo DP,
mal wieder ein Problem mit WNetAddConnection2... Ich verwende den Code aus Posting #10 aus diesem Thread und mit "echten Freigaben" funktioniert das auch bestens. Problematisch wird es erst, wenn ich mein Programm in einer Win7-Virtualbox laufen lasse und dort eine Freigabe von VirtualBox mappen möchte. Ein Aufruf über...
Code:
...funktioniert problemlos.
net use y: \\vboxsvr\d_drive
Die gleiche Geschichte mit WNetAddConnection2 bringt aber nur den Fehler "Der Netzwerkpfad wurde nicht gefunden.". Weiß jemand, was "net use ..." anders macht? Grüße, Uwe |
AW: Netzwerklaufwerk verbinden/trennen
Hallo,
bin neu in dem Forum und auch noch ein Frischling in der Delphi-Welt. Als Umsteiger von Visual Studio hab ich noch Probleme mit Kleinigkeiten die Ihr vermutlich locker aus dem Ärmel schütteln könnt. Zur Zeit bastle ich an einem Projekt in welchem PDF-Dateien die sich auf einem Laufwerk im Netz (Active Directory) befinden auf Android Tablets angezeigt werden sollen. Deshalb kann ich nicht die VCL verwenden sondern das Firemonkey Framework muss zum Einsatz kommen. Somit fällt auch der in diesem Thread enthaltene Tipp mit TNetResource-Klasse flach. Das Anzeigen der PDF's ist nicht allzu schwierig, dafür habe ich schon eine Lösung gefunden. Riesenprobleme hab ich mit der Verbindung zum Netzwerk. Google konnte bisher nicht helfen. Die Lösung für das Problem ist (glaube ich) nicht so einfach. Habe die selbe Frage auch in einem anderen Delphi-Forum gepostet und eigentlich noch keine anwendbare Lösung gefunden. Also: weiß einer von euch Profis hier wie mit Delphi FMX Netzwerklaufwerke verbunden werden können? Grüße Andreas |
AW: Netzwerklaufwerk verbinden/trennen
Diese Frage interessiert mich auch brennend...
|
AW: Netzwerklaufwerk verbinden/trennen
Das Problem ist eigentlich nicht FMX sondern Android/iOS bzw. der falsche Ansatz des Netzzugriffs.
Hier wird versucht den Ansatz eines Desktopprogrammes (Mapping eines Netzlaufwerkes) auf eine mobile Plattform zu übernehmen. Ich würde hier einen anderen Ansatz wählen. |
AW: Netzwerklaufwerk verbinden/trennen
Was ist denn daran so falsch, mit einem Android-Gerät auf eine SMB-Netzwerkfreigabe zugreifen zu wollen?
|
AW: Netzwerklaufwerk verbinden/trennen
Ich würde es nicht als falsch bezeichnen; es ist halt nicht der Weg, wie er vorgesehen ist, den ich gehen würde. Out-Of-The-Box kann Android das imho auch nicht.
|
AW: Netzwerklaufwerk verbinden/trennen
Dieses Thema ist absolutes Neuland für mich - wie würde man es denn 'normalierweise' machen?
|
AW: Netzwerklaufwerk verbinden/trennen
Über eine "middleware", also einen speziellen Dienst, der die Daten dem mobilen Gerät zur Verfügung stellt. Im einfachster Form ein Programm mit AppTethering (ab Delphi XE6)
|
AW: Netzwerklaufwerk verbinden/trennen
Jupp.
Ein kleiner Webservice auf der Windows Server Seite wäre auch mein Ansatz dafür. Im kleinsten Fall würde dieser Service die beiden Methoden "zeige Liste der verfügbaren Dokumente" und "hole Dokument mit Dateinamen(xyz)" implementieren. Als Protokoll wäre für mich JSON die erste Wahl. Das wird überall out of the Box unterstützt. Für Android findest Du einige fertige Java SMB/Samba Client APIs, die Du sicher irgendwie aus FMX ansprechen kannst. Falls Dein Projekt irgendwann auch mal auf iOS genutzt werden soll, dann wird es ohne den Middle Tier Service schwer bis unmöglich. iOS beschränkt das Laden von Dateien auf das eigene Applications Bundle und dessen Documents Verzeichnis. Also am besten gleich einen ordentlichen Windows Dienst bauen, der die Dokumente per Webservice veröffentlichen kann. |
AW: Netzwerklaufwerk verbinden/trennen
Ist ja nett dass es hier nach einiger Zeit ein paar Antworten auf meine Frage gegeben hat.
Leider nicht das was ich mir gewünscht hätte. Das Ziel war einfach in dem Betrieb wo ich arbeite einen freigegebenen Ordner eines Windows-Servers als Laufwerk in Android-Tablets zu Mappen und so einfachen Dateizugriff mit Lese- UND Schreibrechten zu ermöglichen. Es sollte ermöglicht werden PDF's welche in diesem Ordner abgelegt sind zu öffnen und Notizen einzubringen. Natürlich sollten diese Notizen in den PDF's auch gespeichert werden. So wollten wir das zur Zeit in der Werkstatt/Fertigung verwendete Papier nach und nach verringern bzw. ganz eliminieren. Ob die Freigabe eines Ordners eine elegante Lösung darstellt oder nicht ist kaum relevant. Es sollte einfach zu handhaben sein. Die Lösung mit Web-Server hatten wir schon im Einsatz. Die PDF's auf den Tablets darzustellen war nicht schwierig, als Browser musste übrigens Firefox verwendet werden (der einzige Browser auf Android welcher PDF's sofort und ohne weitere Klick's darstellen kann). Letztlich ist das Experiment aber daran gescheitert dass die Arbeiter in den angezeigten PDF's keine Notizen einbringen konnten bzw. dass diese Notizen nicht "zurückgespeichert" werden konnten. Wenn jemand in einer Werkstatt z.B. eine Liste von Profilen die er zuschneiden soll erhält, so möchte dieser auch ausstreichen was er bereits zugeschnitten hat. Hier neben dem PDF auf dem Tablet noch einen weiteren Zettel für Notizen zu verwenden ist nicht zielführend. Also wenn jemand einen Tipp für das Mapping eines Ordners hat bitte weitergeben, auch wenn dies nicht als die richtige Lösung erscheint ;) |
AW: Netzwerklaufwerk verbinden/trennen
Da googelst Du einfach mal nach
![]() Wenn Du dennoch etwas Eigenes basteln willst, dann brauchst Du eine SMB API für Android. Würde ich jetzt pauschal nach ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 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