2017-08-11 6 views
-1

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 ...

+2

Vous ne devriez pas utiliser ShellExecute() pour lancer un fichier .exe en tous cas. Vous devriez utiliser CreateProcess() à la place – RBA

+0

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) –

+0

@RBA quoi de mal à utiliser ShellExecute() pour lancer un exe si je peux demander – Fero

Répondre

-1

j'ai finalement trouvé l'évidence le chemin donné dans l'exemple ci-dessus est juste un exemple le chemin réel est:.

I:\Prosjekt\Læringssenteret\VgFriskoleIndivid\Program\utvOve\WisKrypt\Install 

Et le problème est le caractère norvégien: æ Mais cela n'explique pas pourquoi j'ai obtenu l'erreur 5 - accès refusé en essayant le chemin UNC ...