| Autor |
Beitrag |
Hendrik
      
Beiträge: 324
|
Verfasst: Mi 02.01.08 00:21
Hey!
Bitte steinigt mich, wenn es diese eigentlich einfache Frage schonmal gab, aber ich hab jetzt in der letzten halben Stunde gesucht und nix gefunden
Wie kann ich denn den Netzwerkpfad eines freigegebenen Ordners herausfinden. Genauer gesagt des Ordners in dem meine Exe-Datei liegt?
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 02.01.08 00:34
Moin!
Hendrik hat folgendes geschrieben: | | Wie kann ich denn den Netzwerkpfad eines freigegebenen Ordners herausfinden. Genauer gesagt des Ordners in dem meine Exe-Datei liegt? |
 Den Namen einer Freigabe legst du doch selbst fest, wieso solltest du also Probleme haben, den ermitteln zu müssen?!
Allgemein wird Freigaben der Hostname (besser) oder auch die IP-Adresse (notfalls) vorangestellt, z.B. so:
Quelltext 1: 2:
| \\server\freigabe\Meine.exe \\192.168.0.1\share\Meine.exe | Das kannst du genauso verwenden, wie
Quelltext 1:
| C:\MeinFreigegebenerOrdner\Meine.exe |
(vorausgesetzt, der aktuelle Benutzer hat Rechte, um aus dem Share zu lesen)
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Hendrik 
      
Beiträge: 324
|
Verfasst: Mi 02.01.08 23:54
Jaja das ist schon klar! Es geht mir eben drum, dass das Programm das selbst ermittelt und der Benutzer es nicht selbst eingeben muss. Es handelt sich dabei um eine Serveranwendung, die diesen Pfad über TCP an die Clients schickt und diese dann auf Dateien in dem Pfad zugreifen...
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 02.01.08 23:59
Moin!
Du möchtest also praktisch die Ausgabe von net share auswerten, richtig? Dann stellt sich immernoch die Frage, wie dein Programm mit den (unbekannten) Shares von anderen Leuten umgehen soll - woran willst du denn die "richtige" Freigabe erkennen?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Hendrik 
      
Beiträge: 324
|
Verfasst: Do 03.01.08 15:27
Hi!
Dann mache ich es nochmal ausführlicher:
Auf Rechner 1 (Server) liegt die Exe um die es geht und einige weitere definierte Dateien, die mit dem Setup dort abgelegt werden. Rechner 2 (Client) verbindet sich über TCP in einem LAN mit Rechner 1, welcher über TCP dann den entsprechenden Netzwerkpfad schickt. Nun greift Rechner 2 auf die definierten Dateien zu. Dass der User zunächst den Ordner freigeben muss ist klar. Bisher habe ich es so gemacht, dass der Ordner auf dem Server manuell eingegeben werden muss, würde es aber gerne verbesseren, damit es automatisch geschiet.
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 03.01.08 15:42
Moin!
Hendrik hat folgendes geschrieben: | | Auf Rechner 1 (Server) liegt die Exe um die es geht und einige weitere definierte Dateien, die mit dem Setup dort abgelegt werden. Rechner 2 (Client) verbindet sich über TCP in einem LAN mit Rechner 1, welcher über TCP dann den entsprechenden Netzwerkpfad schickt. |
Warum schickst du nicht gleich alle Daten (Dateien) über diese TCP-Verbindung, das ist doch eigentlich die logische Lösung für das Problem.
Hendrik hat folgendes geschrieben: | | Dass der User zunächst den Ordner freigeben muss ist klar. Bisher habe ich es so gemacht, dass der Ordner auf dem Server manuell eingegeben werden muss, würde es aber gerne verbesseren, damit es automatisch geschiet. |
Narses hat folgendes geschrieben: | | Dann stellt sich immernoch die Frage, wie dein Programm mit den (unbekannten) Shares von anderen Leuten umgehen soll - woran willst du denn die "richtige" Freigabe erkennen? |
Vielleicht war das ja wirklich missverständlich, also nochmal ausführlich:
Wenn der Benutzer deiner Software den Share einrichtet, woran will dein Programm denn erkennen, welchen er eingerichtet hat?!
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Hendrik 
      
Beiträge: 324
|
Verfasst: Do 03.01.08 15:46
Narses hat folgendes geschrieben: | Wenn der Benutzer deiner Software den Share einrichtet, woran will dein Programm denn erkennen, welchen er eingerichtet hat?!  |
Dazu wollte ich ja wissen, ob es geht! Wenn das nichts wird, dann geht es eben nicht...
Und: Ein Senden der Dateien wäre mehr als unpraktisch, da diese u.U. mehrmals pro Sekunde geändert werden, ein Zugriff aber durchaus nur einmal pro Stunde erfolgt.
Moderiert von Narses: Leerzeilen im Zitat entfernt
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Do 03.01.08 15:48
Dann verschick die Daten doch nur auf Nachfrage (=wenn sie benötigt werden).
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 03.01.08 15:51
Moin!
Hendrik hat folgendes geschrieben: | | Dazu wollte ich ja wissen, ob es geht! Wenn das nichts wird, dann geht es eben nicht... |
Es geht bei deinem Problem doch gar nicht um die Möglichkeiten, die Shares zu ermitteln (siehe net share, da geht´s ja auch), sondern darum, dass du ein nicht lösbares, logisches Problem hast: du weißt in der Software nicht, welchen Share der Benutzer angelegt hat, kannst ihn also auch nicht automatisch ermitteln...
Hendrik hat folgendes geschrieben: | | Und: Ein Senden der Dateien wäre mehr als unpraktisch, da diese u.U. mehrmals pro Sekunde geändert werden, ein Zugriff aber durchaus nur einmal pro Stunde erfolgt. |
Du brauchst ja auch nur bei einem Login die Daten (Dateien) zu senden.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Hendrik 
      
Beiträge: 324
|
Verfasst: Do 03.01.08 21:02
Dann sehen wir das mal als beantwortet an...
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 03.01.08 22:34
Narses hat folgendes geschrieben: | Hendrik hat folgendes geschrieben: | | Dazu wollte ich ja wissen, ob es geht! Wenn das nichts wird, dann geht es eben nicht... | Es geht bei deinem Problem doch gar nicht um die Möglichkeiten, die Shares zu ermitteln (siehe net share, da geht´s ja auch), sondern darum, dass du ein nicht lösbares, logisches Problem hast: du weißt in der Software nicht, welchen Share der Benutzer angelegt hat, kannst ihn also auch nicht automatisch ermitteln...  |
Das ist aber auch gar nicht wichtig  . Es reicht ja, wenn ich eine Freigabe finde, die auf das entsprechende Verzeichnis zeigt. Es dürfte nicht so einfach möglich sein, dass zwei Freigaben auf das gewünschte Verzeichnis (hier das der ausführbaren Datei des Programms) verweisen, aber selbst wenn es so wäre, reicht es ja eine davon zu kennen.
(So habe ich die Frage jedenfalls verstanden.)
Nun kannst du die Liste der Freigaben zum Beispiel per Aufruf von net share und Auswertung der Ausgabe oder über die LAN Manager API direkt bekommen. Die passende API Funktion müsste WNetEnumResource sein. Ich kann das ggf. auch noch einmal genauer schreiben.
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 03.01.08 22:54
Moin!
jaenicke hat folgendes geschrieben: | | Es reicht ja, wenn ich eine Freigabe finde, die auf das entsprechende Verzeichnis zeigt. Es dürfte nicht so einfach möglich sein, dass zwei Freigaben auf das gewünschte Verzeichnis (hier das der ausführbaren Datei des Programms) verweisen |
Ja, das könnte gehen. Was allerdings zwingend voraussetzt, dass der Anwendung der lokale Pfad der Freigabe implizit bekannt ist.  Allgemein gesehen ist das eine logische Sackgasse.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 03.01.08 22:59
Narses hat folgendes geschrieben: | Was allerdings zwingend voraussetzt, dass der Anwendung der lokale Pfad der Freigabe implizit bekannt ist. Allgemein gesehen ist das eine logische Sackgasse.  |
Hendrik hat folgendes geschrieben: | | Wie kann ich denn den Netzwerkpfad eines freigegebenen Ordners herausfinden. Genauer gesagt des Ordners in dem meine Exe-Datei liegt? |

|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 03.01.08 23:06
Moin!
Was wiederum implizit voraussetzt, dass es sich um die Exe des Delphi-Projekts handelt.  Es könnte ja auch eine andere Exe sein...
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|