Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Das System kann das angegebene Laufwerk nicht finden. (https://www.delphipraxis.net/184965-das-system-kann-das-angegebene-laufwerk-nicht-finden.html)

Camy 5. Mai 2015 11:07

Das System kann das angegebene Laufwerk nicht finden.
 
Hallo an alle,

ich nutze Delphi 7 in Windows 7.

Ich will mit ShellExecute eine batch-Datei ausführen, die Dateien von einem Verzeichnis in ein anderes schiebt.

Delphi-Quellcode:
 ShellExecute(0,NIL,'C:\temp\test.bat',NIL,NIL,SW_SHOW);
Oder ohne batch-Datei:

Delphi-Quellcode:
ShellExecute(0,NIL,'cmd','/k move "Z:\xxx\test.txt" "C:\temp\test2\"',NIL,SW_NORMAL);
Da ich Probleme mit den Nutzerrechten hatte, habe ich eine Manifest-Datei eingefügt:

Delphi-Quellcode:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
      <application>
        <!--The ID below indicates application support for Windows Vista -->
          <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
        <!--The ID below indicates application support for Windows 7 -->
          <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
      </application>
    </compatibility>
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
     <security>
      <requestedPrivileges>
       <requestedExecutionLevel level="requireAdministrator"/>
      </requestedPrivileges>
    </security>
   </trustInfo>
  </assembly>
Wenn ich die batch-Datei oder direkt den Befehl in cmd ausführe, funktioniert das Verschieben ohne Probleme. Wenn ich dies aber über Delphi ausführen will, kommt: Das System kann das angegebene Laufwerk nicht finden.

Wo und wie muss ich was einfügen, damit das funktioniert?
Wahrscheinlich sehe ich beim Suchen den Wald vor lauter Bäumen nicht. Wäre schön, wenn ihr mir helfen könntet.
Danke im Voraus.

mkinzler 5. Mai 2015 11:18

AW: Das System kann das angegebene Laufwerk nicht finden.
 
Ist Z: ein lokales Laufwerk? Wenn nicht fehlt das dem Adminbenutzer u.U.

Camy 5. Mai 2015 11:32

AW: Das System kann das angegebene Laufwerk nicht finden.
 
Nein, Z: ist ein Netzlaufwerk.
Das muss ich vermutlich auch in die Manifest-Datei einfügen?

mkinzler 5. Mai 2015 11:38

AW: Das System kann das angegebene Laufwerk nicht finden.
 
Wenn das Programm als Admin gestartet wird, läuft es in einem anderen Benutzerkontext, dem fehlen u.U. die Netzlaufwerke. Mappe das Laufwerk für den Admin-Benutzer.

Dalai 5. Mai 2015 12:06

AW: Das System kann das angegebene Laufwerk nicht finden.
 
Netzlaufwerke sind nutzerspezifisch, d.h. jeder Nutzer hat seine eigenen. Das gilt auch für das Ausführen als Administrator ab Vista, sofern die UAC eingeschaltet ist. Daher muss das Netzlaufwerk erst verbunden werden, bevor es benutzt werden kann.

MfG Dalai

baumina 5. Mai 2015 13:06

AW: Das System kann das angegebene Laufwerk nicht finden.
 
Wenn du statt "Z:\" "\\[SERVER]\" verwenden kannst, kannst dir das Laufwerk verbinden sparen.

Camy 5. Mai 2015 13:38

AW: Das System kann das angegebene Laufwerk nicht finden.
 
Danke. Ich habe "Z:\" mit dem Servernamen ausgetauscht und es klappt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf