Je suis en train:Shellexecute Erreur 2 - Le fichier spécifié n'a pas été trouvé
cmdline := 'I:\test.exe';
Result := ShellExecute(0,nil, PChar(cmdline),PChar(''),nil,1)
Où I: \ est un lecteur réseau. Cela me donnerait l'erreur: 2 - fichier non trouvé
Si je tente:
cmdline := '\\10.10.10.10\data\test.exe';
Result := ShellExecute(0,nil, PChar(cmdline),PChar(''),nil,1)
donne l'erreur: 5 - Accès refusé
donc je suppose que ShellExecute
ne reçoit pas le lecteur réseau mappé, ni les informations d'identification de l'utilisateur connecté.
Alors, comment puis-je obtenir ShellExecute
pour exécuter la commande dans l'environnement utilisateur actuel? Ou plus probablement: Quelle est la chose évidente qui me manque?
Espérant @RBA m'a donné la chose évidente que j'ai maintenant essayé:
FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
StartupInfo.cb := SizeOf(TStartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := sw_Normal;
FillChar(ProcessInfo, SizeOf(TProcessInformation), 0);
if CreateProcess(pchar(cmdline), Nil, Nil, Nil,
False, CREATE_NEW_CONSOLE, Nil, Nil,
StartupInfo, ProcessInfo) then
result := true
else
result := false;
Mais toujours pas exe lancé :( même erreur:. 2 - fichier non trouvé Makes me crois qu'il ya quelque chose d'autre . que le code qui me joue un tour ...
Vous ne devriez pas utiliser ShellExecute() pour lancer un fichier .exe en tous cas. Vous devriez utiliser CreateProcess() à la place – RBA
Donc j'ai googlé et essayé CreateProcess et toujours incapable de lancer l'exe sur le lecteur mappé. (Je vais mettre à jour ma question avec l'exemple CreateProcess) –
@RBA quoi de mal à utiliser ShellExecute() pour lancer un exe si je peux demander – Fero