Einzelnen Beitrag anzeigen

waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#9

AW: ShellExecute, Batch über runas starten

  Alt 28. Apr 2016, 11:45
Hallo,
OK, ich hab's jetzt doch noch mit einigen Anpassungen hinbekommen.
Eine Ursache war, dass ich den Parameter /C im 3 Parameter mit dabei hatte, also PChar('cmd.exe /C') hieß. Shellexecute lief dann mit Error 2 (kann Datei nicht finden) auf Fehler.
Wichtig sind auch die entsprechenden "" weil auf diese Weise die Parameter getrennt werden müssen (Langer Dateiname mit eventuellen Leerzeichen).
Ein weiterer Fehler war, dass beim Aufruf der Batch mit CMD, das aktuelle Verzeichnis auf c:\windows\system32 verweist.
Übergebe hier das richtige Verzeichnis als 2ten CMD-Parameter, könnte man sicher auch in der Batch abfangen ....


Mit anliegendem Aufruf funktioniert es.

Code:
   
Temp_Vz := 'c:\tmp\Update\'

   
ShellExecute(handle, 'runas', PCHAR('cmd.exe'),
                              PCHAR('/C ""'+Temp_Vz+'A_Upd.bat" '+batch_par+' "'+Temp_Vz+'""' ),
                              PCHAR('"'+Temp_Vz+'"'), SW_HIDE);
lässt sich sicher optisch noch verbessern, aber es funktioniert. Nochmals Danke für die Impulse.

ergänzende Info über http://ss64.com/nt/cmd.html
mfg wf

Geändert von waldforest (28. Apr 2016 um 12:22 Uhr)
  Mit Zitat antworten Zitat