-
Vista et CreateProcess
Salut à tous :D
Voila comme c'est la mode, je lance ma discussion à moi sur la compatibilité Vista :lol:
Voila mon problème:
J'ai codé 2 applications. L'une est le programme en lui-même et l'autre est un Updater: il va télécharger la dernière version sur un FTP.
Voici comment l'opération se passe:
Le prog principal se lance et vérifie lui-même s'il existe une nouvelle version. S'il en trouve une, il lance l'updater et s'arrête. L'updater télécharge la nouvelle version, la dézippe et la lance puis s'arrête. Tout se passe comme sur des roulettes sous WinXP SP2... Mais sous Vista, dès que le programme a repéré une nouvelle version sur le FTP, il est censé lancer l'Updater et s'arrêter. Il s'arrête bien mais rien ne se passe ensuite.
Toutefois, si on lance directement l'Updater, tout se passe bien: la nouvelle version se télécharge, se dézippe, et est lancée et l'Updater s'arrête...
Donc voila mes questions:
Etant donné que j'utilise strictement la même méthode pour exécuter le programme et l'updater (CreateProcess), Sous Vista, y a-t-il une différence supplémentaire entre CreateProcess et ShellExecute? Doit-on utiliser ShellExecute?
Le fait d'utiliser un Mutex dans le programme principal ne pose-t-il pas un
problème?
Merci d'avance :D
-
Salut :D
Bon après quelques recherches et essais, j'ai trouvé la source du problème. La voici:
Lorsqu'un exécutable est lancé, si le nom du fichier contient des mot clés du genre "install", "patch", "setup", ou encore -dans mon cas- "update", son lancement nécessite des droits d'administrateur. Et dans ce cas-là, CreateProcess est tout simplement annulé sans aucun avertissement 8O
Donc le problème ne vient pas du tout de BDS2006 mais bien du système d'administration de Vista.
Les solutions:
- Utiliser ShellExecute en lieu et place de CreateProcess. ShellExecute pourra alors lancer le programme et, le cas échéant, afficher la boite de dialogue système de validation du lancement.
- Renommer l'exécutable. C'est encore plus simple. D'ailleurs, vous remarquerez que lorsque ces fichiers ont un nom de fichier contenant les mots-clés cités plus haut, un petit écusson apparait sur son icone. Cet écusson signifie qu'il faut les droits admin sur la machine pour le lancer. Il suffit alors de le renommer pour faire disparaitre l'écusson... :lol:
Voila