Entwickler-Ecke

Internet / Netzwerk - Netzwerkslaufwerkbuchstabe ermitteln


Kreuterli - Di 23.03.04 14:53
Titel: Netzwerkslaufwerkbuchstabe ermitteln
Hallo,

da ich noch Anfänger bin, komme ich mit einem Problem nicht weiter. Nach 3 Tagen intensiver Internetsuche bin ich am verzweifeln. :nixweiss:

Falls es so eine Frage schon mal gab bin ich nicht in der Lage dieses zu finden! Sorry! :oops:

Es geht um folgendes:

Meine Anwendung greift auf eine Interbase Datenbank zu, dessen Pfad in der Registrierung hinterlegt ist. Also wird beim Starten der Anwendung in der Registrierung nach dem Pfad gesucht und wenn keiner hinterlegt ist öffnet sich ein Dialogfeld in dem der Anwender die Datenbank heraussuchen kann, der Pfad wird dann aus dem OpenDialog.FileName ausgelesen und in die Registrierung geschrieben!
Bei Lokaler Anwendung ist das auch kein Problem. Aber wenn die Datenbank im Netzwerk liegt wird der Pfad folgendermaßen hinterlegt: \\Serfer\Pfad\Datenbank.gdb

Das Problem ist das dieser Pfad dann nicht gefunden wird sondern nur wenn der String so aussieht: Serfer:Laufwerksbuchstabe:\Pfad\Datenbank.gdb

Und mein Problem ist es: wie komme ich an den Laufwerksbuchstabe??

Oder gibt es noch andere Möglichkeiten den Netzwerkpfad zu hinterlegen indem der Anwender einfach im Dialogfeld den Pfad auswählt, so das der Pfad auch gefunden wird!!

Ich bin Euch schon jetzt für jede Hilfe Dankbar


Anonymous - Di 23.03.04 15:10
Titel: Re: Netzwerkslaufwerkbuchstabe ermitteln
Zitat:
\\Serfer\Pfad\Datenbank.gdb


Kommt drauf an wie du deine Freigaben gesetzt hast sollte es so funktionieren...


ixtreme.de


Kreuterli - Di 23.03.04 15:14
Titel: Netzwerkslaufwerkbuchstabe ermitteln
Sorry, kannst du mir das näher erklären!!


Anonymous - Di 23.03.04 15:18

ja, du kannst ja nicht direkt auf die Laufwerksbuchstaben zugreifen, sondern nur auf die Freigaben...

Also sollte es eigentlich mit der Pfadangabe des Netzwerkes gehen...

Gib es doch mal im Explorer ein und schau nach!


ixtreme.de


Kreuterli - Di 23.03.04 15:29

Im Explorer funzt das, aber aus der Registrierung kommt folgend Fehlermeldung:

operating system directive CreateFile failed Zugriff verweigert


Anonymous - Di 23.03.04 15:33

dann schau mal ob dein programm den pfad auch richtig übergeben bekommt!


gruß

ixtreme.de


Kreuterli - Di 23.03.04 15:42

das ist nicht das Problem, wenn ich den Pfad von Hand in dir Registry schreibe
(Server:Laufwerk:\Pfad\Datenbank) dann klappt das auch, deshab denke ich ja dass ich den Buchstaben brauche :nixweiss:


Kreuterli - Di 23.03.04 16:28

Das Problem liegt beim Interbase, dies ist auch hier nach zulese:


http://www.elists.org/pipermail/delphi-db/2002-August/006155.html


MAlsleben - Mi 24.03.04 11:24

Hi,

das ganze hat nichts mit Freigaben und Netzlaufwerken zu tun, sondern der Client- Konfiguratuion zu einem Interbase- Server.
Dies ist so defierniert, wie Du es eigentlich geschrieben hast. Server kann Servername oder Ip-Adresse des Server sein. Laufwerksbuchstabe ist der lokale Laufwerksbuchstabe auf dem Server und genau so sind auch die darauffolgenden Pfadangaben gemeint.

Gruß Micha.


Kreuterli - Mi 24.03.04 13:46

Genau so ist es und ich brauch den Laufwerksbuchstaben, wie kann ich den ermitteln!!
Natürlich ohne auf dem Server nachzuschaun, dies soll das Programm eigenständig schaffen!!


MSCH - Mi 24.03.04 21:14

Kreuterli hat folgendes geschrieben:
Genau so ist es und ich brauch den Laufwerksbuchstaben, wie kann ich den ermitteln!!
Natürlich ohne auf dem Server nachzuschaun, dies soll das Programm eigenständig schaffen!!


sofern der Anwender ein Laufwerk definiert hat sollte dieser auch das Laufwerk und nicht den \\..\ Pfad angeben. Wenn allerdings kein Laufwerksbuchstabe gemappt ist, was ja die Regel zu sein scheint, kannst du auch keinen Suchen.
Schau dir mal die Funktion GetDriveType(), DefineDosDevice() und QueryDosDevice() an.
Dort solltest du das notwendige finden. (SDK)

Zur Not kanns du ja temporär für deine Anwendung ein Laufwerksbuchstabe schaffen:
Liefert GetDriveType()=1 dann ShellExecute('Net use [Laufwerk] Pfad') oder so etwas.
grez
msch


Jocke - Di 25.05.04 10:20

Hallo,

die Möglichkeit, ein Laufwerk temporär zu verbinden, wäre auch für mich sehr interessant.

MSCH hat folgendes geschrieben
Zitat:

Liefert GetDriveType()=1 dann ShellExecute('Net use [Laufwerk] Pfad') oder so etwas.


Welche Parameter müssen denn noch eingesetzt werden ?