Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Netzwerklaufwerk verbinden/trennen (https://www.delphipraxis.net/29982-netzwerklaufwerk-verbinden-trennen.html)

gkaeberich 17. Sep 2004 21:12


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

Tubos 17. Sep 2004 21:17

Re: Netzwerklaufwerk verbinden/trennen
 
Hallo!

Wer suchet, der findet:
Hier im Forum suchenNetzlaufwerk
:)

Tubos

yankee 18. Sep 2004 10:16

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 :-)

Christian Seehase 18. Sep 2004 10:22

Re: Netzwerklaufwerk verbinden/trennen
 
Moin Zusammen,

vielleicht helfen dann die Suchbegriffe [dp]WNetAddConnection*[/dp] und/oder [dp]WNetCancelConnection*[/dp] weiter.

toms 18. Sep 2004 10:23

Re: Netzwerklaufwerk verbinden/trennen
 
Delphi-Quellcode:
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;
Aufrufbeispiel:

Delphi-Quellcode:
if (NetzlaufwerkVerbinden('X:', '\\NTSERVER\DATEN',
    'Bjoern', '', False) = 0) then
    ShowMessage('OK')
  else
    ShowMessage('Fehler!');
[edit=Luckie]Neu gespeichert, wegen Syntaxhighlightning. Mfg, Luckie[/edit]

gkaeberich 18. Sep 2004 13:12

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

alcaeus 18. Sep 2004 13:13

Re: Netzwerklaufwerk verbinden/trennen
 
Hi Günther,

sieh mal im MSDN nach: MSDN-Library durchsuchenWNETCANCELCONNECTION

Greetz
alcaeus

gkaeberich 18. Sep 2004 20:47

Re: Netzwerklaufwerk verbinden/trennen
 
Hallo,

vielen Dank, ich habe die entsprechende Funktion gefunden und sie funktioniert.

Günther

Plague 14. Jan 2005 15:46

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

NicoDE 14. Jan 2005 15:49

Re: Netzwerklaufwerk verbinden/trennen
 
Gute Frage, die Antwort liefert:
Delphi-Quellcode:
ShowMessage(SysErrorMessage(NetzlaufwerkVerbinden(...)));

Plague 14. Jan 2005 15:57

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

Christian Seehase 14. Jan 2005 22:54

Re: Netzwerklaufwerk verbinden/trennen
 
Moin Thomas,

bist Du sicher, dass nicht nur der Ordner, sondern auch die Freigabe "Daten" heisst?

Plague 16. Jan 2005 11:49

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

WIng2005 9. Jan 2009 09:17

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

SirThornberry 9. Jan 2009 09:28

Re: Netzwerklaufwerk verbinden/trennen
 
was heißt "funktioniert nicht"? Welchen Fehler gibt die Funktion zurück?

WIng2005 9. Jan 2009 09:45

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

Luckie 9. Jan 2009 09:53

Re: Netzwerklaufwerk verbinden/trennen
 
Les doch einfach mal in der Hilfe:
Zitat:

If the function succeeds, the return value is NO_ERROR.

If the function fails, the return value is a system error code, such as one of the following values.
Und darunter ist die Tabelle.

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:
net helpmsg 85
und bekommst dann als Ausgabe:
Code:
Der lokale Gerätename wird bereits verwendet.
Oder du nimmst die Delphi Funktion Delphi-Referenz durchsuchenSysErrorMessage und lässt dir den fehler im Klartext ausgeben.

WIng2005 9. Jan 2009 10:04

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

WIng2005 21. Jan 2009 10:51

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

Schorschi5566 9. Okt 2010 11:27

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:
net use y: \\vboxsvr\d_drive
...funktioniert problemlos.

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

schand99 19. Feb 2014 14:09

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

MaxPayne91 30. Jun 2014 10:04

AW: Netzwerklaufwerk verbinden/trennen
 
Diese Frage interessiert mich auch brennend...

mkinzler 30. Jun 2014 10:12

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.

Der schöne Günther 30. Jun 2014 10:18

AW: Netzwerklaufwerk verbinden/trennen
 
Was ist denn daran so falsch, mit einem Android-Gerät auf eine SMB-Netzwerkfreigabe zugreifen zu wollen?

mkinzler 30. Jun 2014 10:22

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.

MaxPayne91 30. Jun 2014 10:56

AW: Netzwerklaufwerk verbinden/trennen
 
Dieses Thema ist absolutes Neuland für mich - wie würde man es denn 'normalierweise' machen?

mkinzler 30. Jun 2014 11:03

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)

jensw_2000 30. Jun 2014 13:18

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.

schand99 18. Aug 2014 10:52

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 ;)

jensw_2000 18. Aug 2014 11:04

AW: Netzwerklaufwerk verbinden/trennen
 
Da googelst Du einfach mal nach "Android CIFS SMB" und findest diverse fertige Clients. Einige davon scheinen kostenlos zu sein und sich daher für einen Produktionstest zu eignen.

Wenn Du dennoch etwas Eigenes basteln willst, dann brauchst Du eine SMB API für Android. Würde ich jetzt pauschal nach "Android SMB API" googeln. :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 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