Entwickler-Ecke
Internet / Netzwerk - Netzwerkpfad eines freigegebenen Ordners ermitteln
Hendrik - Mi 02.01.08 00:21
Titel: Netzwerkpfad eines freigegebenen Ordners ermitteln
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 - Mi 02.01.08 00:34
Titel: Re: Netzwerkpfad eines freigegebenen Ordners ermitteln
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? |
:gruebel: Den Namen einer Freigabe legst du doch selbst fest, wieso solltest du also Probleme haben, den ermitteln zu müssen?! :nixweiss:
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
Hendrik - 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 - 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? :gruebel:
cu
Narses
Hendrik - 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 - 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. :idea: ;)
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?! :nixweiss:
cu
Narses
Hendrik - 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?! :nixweiss: |
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 - Do 03.01.08 15:48
Dann verschick die Daten doch nur auf Nachfrage (=wenn sie benötigt werden).
Narses - 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... :nixweiss: :idea: ;)
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
Hendrik - Do 03.01.08 21:02
Dann sehen wir das mal als beantwortet an...
jaenicke - 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... :nixweiss: :idea: ;) |
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 [
http://www.dsdt.info/tipps/?id=637] oder über die LAN Manager API direkt bekommen. Die passende API Funktion müsste
WNetEnumResource [
http://msdn2.microsoft.com/en-us/library/aa385449.aspx] sein. Ich kann das ggf. auch noch einmal genauer schreiben.
Narses - 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. :zwinker: Allgemein gesehen ist das eine logische Sackgasse. ;)
cu
Narses
jaenicke - Do 03.01.08 22:59
Titel: Re: Netzwerkpfad eines freigegebenen Ordners ermitteln
Narses hat folgendes geschrieben: |
| Was allerdings zwingend voraussetzt, dass der Anwendung der lokale Pfad der Freigabe implizit bekannt ist. :zwinker: 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 - Do 03.01.08 23:06
Moin!
Was wiederum implizit voraussetzt, dass es sich um die Exe des Delphi-Projekts handelt. :idea: Es könnte ja auch eine andere Exe sein... :D
cu
Narses
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!