Envoyé par
nestea57
Bon j'ai compilé et mis à ma sauce, ça marche mais pas pour un truc.
J'ai TrueCrypt.exe, on peut l'ouvrir avec des options.
Par exemple :
TrueCrypt.exe /q background /e /m rm /v aa.tc
Ce sont SES options que j'ai trouvé dans la doc, quand je le met dans un raccourcis ça marche nickel mais dès que j'essaie de le mettre dans execl, soit le programme ne s'ouvre pas soit c'est Truecrypt qui ne trouve pas le chemin ou le fichier "aa.tc" ( volume que je veux ouvrir )
Ne se passe rien:
execl( "TrueCrypt.exe /q background /e /m rm /v aa.tc", "TrueCrypt.exe /q background /e /m rm /v aa.tc", ".", (char*)0);
TrueCrypt s'ouvre mais une fois le mot de passe rentré, il me dit qu'il ne trouve pas le fichier :
execl( "TrueCrypt.exe", "TrueCrypt.exe /q background /e /m rm /v aa.tc", ".", (char*)0);
Ne se passe rien :
execl( "TrueCrypt.exe", "TrueCrypt.exe", "/q background /e /m rm /v aa.tc", ".", (char*)0);
Il faudrait aussi te renseigner un petit peu sur les primitives exec()
Il y en a 6
- execl => exec avec les arguments en liste (comme tu vois, tu places tes arguments les uns après les autres séparés par une virgule)
- execle => execl + possibilité de passer à ton programme un environnement particulier. Tu le lui passes sous forme char ** (comme envp)
- execlp => execl mais le système utilise le PATH pour trouver le programme
- execv => exec avec les arguments passés sous forme de tableau de valeurs (comme argv)
- execve => execv + environnement
- execvp => execv + PATH
Or quand tu appelles truecrypt depuis une console, tu as un PATH positionné qui permet au système de savoir où est cet exécutable. Mais depuis execl(), le PATH n'est pas pris en compte
Donc soit tu mets le chemin en absolu =>
execl("c:\Program Files\TrueCrypt\TrueCrypt.exe", "TrueCrypt.exe", "/q background /e /m rm /v C:\Documents and Settings\nestea57\Mes Documents\aa.tc", ".", (char*)0);
Soit tu utilises execlp() pour que ton système sache où se trouve truecrypt (accessoirement, si /q et background sont des arguments différents, je les mettrais en séparés =>
execlp("TrueCrypt.exe", "TrueCrypt.exe", "/q", "background", "/e", "/m", "rm", "/v", "C:\Documents and Settings\nestea57\Mes Documents\aa.tc", ".", (char*)0);
Partager