Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Netzlaufwerk W7 64 Bit (https://www.delphipraxis.net/169025-netzlaufwerk-w7-64-bit.html)

udo888 25. Jun 2012 09:14

Delphi-Version: 5

Netzlaufwerk W7 64 Bit
 
Hallo,
ich plage mich mit einem irren Problem herum - vielleicht hat jemand eine Idee.

Ich erstelle im 64-Bit-Windows-7 einen Ordner, gebe diesen frei und verbinde (auf dem selben PC) ein Netzlaufwerk auf diesen. Im Explorer werden alle enthaltenen Dateien angezeigt, kein Problem.

Mein Delphi-Programm (mit Delphi 7 erstellt) soll nun auf diese Dateien zugreifen. Sowohl FileExists als auch FindFirst liefern keine Ergebnisse. Wenn ich aus dem Programm heraus BrowseForFolder aufrufe, wird das Laufwerk zwar angezeigt, ist aber rot "durchgeixt". Sobald ich darauf klicke, kann ich es trotzdem öffnen und bekomme auch alle enthaltenen Unterordner angezeigt. Ab diesen Moment funktioniert auch FileExists wieder.
Wenn ich dieses Netzlaufwerk aus einem anderen PC anspreche, habe ich das selbe Problem.

Erstaunlicherweise hatte ich das Problem bei 32-Bit-Systemen noch nicht. Wo klemmt die Säge??? Kann ich irgendwie das gemappte Laufwerk zwanghaft öffnen?

mkinzler 25. Jun 2012 09:15

AW: Netzlaufwerk W7 64 Bit
 
Unter welchem Benutzer läuft das Delphiprogramm?

udo888 25. Jun 2012 09:16

AW: Netzlaufwerk W7 64 Bit
 
Auf dem Standardbenutzer mit vollen Admin-Rechten.

Morphie 25. Jun 2012 09:20

AW: Netzlaufwerk W7 64 Bit
 
Du verbindest das Netzlaufwerk ganz normal mit der Windows 7 Oberfläche?
Tritt der Fehler auch auf, wenn du das Netzlaufwerk gerade neu zugeordnet hast? Oder nur z.B. nach einem Neustart?
Ist der Rechner per WLAN im Netzwerk?

udo888 25. Jun 2012 09:24

AW: Netzlaufwerk W7 64 Bit
 
Ich verbinde das Laufwerk im Explorer über Netzwerk mit Wiederherstellen bei Neustart. Testweise werde ich jetzt einmal einen "net use ..." in die Autostart eintragen.

udo888 25. Jun 2012 09:31

AW: Netzlaufwerk W7 64 Bit
 
Also Netzlaufwerk getrennt, neu gebootet.
Dann über die Kommandozeile mit "net use p: ..." das Laufwerk zugewiesen. Im Explorer wird dieses sofort angezeigt.

In meinem Programm wird es auch danach nicht gefunden, das Laufwerk hat in BrowseForFolder weiterhin ein rotes X.

ChrisE 25. Jun 2012 10:00

AW: Netzlaufwerk W7 64 Bit
 
Zitat:

Zitat von udo888 (Beitrag 1172278)
Also Netzlaufwerk getrennt, neu gebootet.
Dann über die Kommandozeile mit "net use p: ..." das Laufwerk zugewiesen. Im Explorer wird dieses sofort angezeigt.

In meinem Programm wird es auch danach nicht gefunden, das Laufwerk hat in BrowseForFolder weiterhin ein rotes X.

Das hört sich doch danach an, als ob Du das Netzlaufwerk unter einem Benutzerkonto erstellst und das Programm dann im vermeintlich selben Account mit erhöhten Rechten startest. Unter Vista und Win7 sind Benutzer mit Adminrechten auch erstmal nur Benutzer (vorausgesetzt UAC ist aktiviert). Erst wenn Prozesse/Anwendungen erhöhte Rechte brauchen, werden diese einzelnen Prozesse auf dieses höhere Level geschaltet. Innerhalb dieses höheren Levels (Admin-Level) gibt es zwar wohl die Netzlaufwerke, aber sie sind nie verbunden worden - sonder nur angelegt. Daher kommt das rote X. Man kann ein Win-API-Aufruf benutzten um das Netzlaufwerk wieder zu verbinden - mir fällt nur gerade nicht ein, wie der heißt.

Gruß, Chris
[EDIT] Testweise mal eine Komandozeile mit Adminrechten starten und das
Code:
net use
... ausführen und dann nochmal das Programm starten.[/EDIT]

Morphie 25. Jun 2012 10:03

AW: Netzlaufwerk W7 64 Bit
 
Zitat:

Zitat von udo888 (Beitrag 1172273)
Auf dem Standardbenutzer mit vollen Admin-Rechten.

Du hast das Programm also als Administrator ausgeführt? Ist die UAC-Abfrage erschienen?
So wie ich das verstehe musst du die Netzlaufwerke dann unter den gleichen Berechtigungen verbinden...
Versuch also mal eine Batchdatei zu erstellen mit dem "net use" Befehlen...

Dann Netzlaufwerk trennen, Rechner neustarten, Rechtsklick auf die Batch > Als Administrator ausführen
Findet dein Delphi-Programm das Netzlaufwerk dann richtig?

Edit: verdammt, zu langsam

udo888 25. Jun 2012 11:23

AW: Netzlaufwerk W7 64 Bit
 
Korrekt, damit hätte ich des Übels Ursache gefunden! Vielen Dank erstmal!

Ich habe die Batch mit dem "net use ..." als Administrator ausgeführt, worauf der Explorer nichts angezeigt hat. Erst mit einem normalen Start wurde es gelistet.

Das Programm selber ist ein selbst geschriebenes Setup-Programm, welches beim Start die Administrator-Abfrage auslöst. Das Programm liest aus der Registry, dass ein Datenverzeichnis X:\Daten existiert. Da jedoch das Programm in einer "anderen Welt" lebt, findet es das bezeichnete Laufwerk nicht.

Wie aber kann ich ein Laufwerk als Administrator zuweisen? Hier auf dem Test-PC gibt es nur einen Standardbenutzer.
Bei vielen Anwendern habe ich vom jeweiligen Admin zur Installation einen Zugang mit Administrator-Rechten bekommen, war aber nicht der Administrator selber.
Würde bedeuten, dass mein Setup (welches ein Update installieren soll) ins Leere läuft.

Kann ich ein Netzlaufwerk im Programm selber verbinden bzw. die Verbindung herstellen?

ChrisE 25. Jun 2012 15:58

AW: Netzlaufwerk W7 64 Bit
 
Hallo,

also - eins nach dem anderen :-)

1. Wenn Dein Programm per manifest sagt, dass es höhere Rechte benötigt passiert folgendes:
  • WinXP: User hat die Rechte -> nichts
  • WinXP: User hat die Rechte nicht -> Ausführen als Dialog öffnet sich
  • Vista / Win7: User hat die Rechte -> UAC-Dialog fragt ggf. nach ob die Rechte für dieses Programm gewährt werden sollen
  • Vista / Win7: User hat die Rechte nicht -> ausführen als Dialog um den Prozess die Rechte zu geben
Ab Windows Vista passiert das "Anfordern von höheren Rechten" zusätzlich durch den Dateinamen der exe-Datei. "Update" und "Setup" sind hier nur ein paar Beispiele.

2. Das du das Batch mit erhöhten Rechten ausgeführt hast und im Explorer zunächst nichts gesehen hast sagt ja erstmal nichts. Gab es Fehlermeldungen in der Komandozeile? Hat Dein Setup danach immer noch Probleme gehabt?

3. Wann braucht man Adminrechte für ein Update / Installation:
Es gibt durchaus Fälle, bei denen du keine erhöhten Rechte benötigst. Das kannst aber nur du entscheiden / herausbekommen. Du Programmierst das Update ja :-) Z.B.: Erstellst du Programmverknüpfungen in "All Users\Desktop"? Registrierst du ActiveX-Sachen im System? Installierst du Treiber?
Was ich damit sagen will ist, je nachdem was dein "Installer" macht, braucht er diese Rechte oder eben auch nicht.
Wenn er sie braucht, dann musst du Dich damit auseinander setzen, wie du diese Probleme lösen kannst (Existiert das Netzlaufwerk etc.) - aber erst dann. Wenn nicht, benenne Dein Installer um und alles läuft durch im Benutzerkontext :-)

Gruß, Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:01 Uhr.
Seite 1 von 2  1 2      

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