Bonjour,
J'ai un serveur 2008 R2 x64 sur lequel j’exécute une hta.
Pour les besoin de mon script j'ai besoin de l’exécuter en 32 bits car certaines classes WMI ne sont accessibles qu'en 32 et
certains exécutables système ne sont accessibles qu'en 32 également.
Par défaut lorsque je clique sur la hta (comportement de l'OS par défaut), celle ci va s’exécuter en 64 bits : Process mshta.exe*32
Commande :C:\Windows\SysWOW64\mshta.exe E:\Scripts\HTA\check.hta
Process généré : mshta.exe*32
Pour la lancer en 32 bits, il faut faire :
c:\windows\System32\mshta.exe E:\Scripts\HTA\check.hta
Ça fonctionne et elle se lance bien en 32 bits avec le process mshta.exe.
Cependant, lorsque je clique sur ma hta, je souhaiterais que celle-ci détecte la version de mon OS et se lance en 32 ou 64 en fonction de l'OS détecté.
Sur un OS 32 je n'ai pas de soucis.
Donc pou éviter d'avoir plusieurs exécutables, 1 en 32 et 1 en 64, j'essaye de mettre en place une ruse.
Dans mon script j'ai fait une détection d'OS en javascript.
Si c'est du 64 bits il fait une copie temp.hta de mon script d'origine et lance le temp.hta en 32bits.
Algo :
--> Double Clique sur check.hta (Lancement 64 bits par défaut : mshta.exe*32)
--> Si OS 32 Détecté on continue la routine, no pb.
--> Si OS 64 Détecté, copie de check.hta en temp.hta
--> Puis lancement dans check.hta de : WshShell.Run("c:\windows\System32\mshta.exe E:\Scripts\HTA\temp.hta "),1,true
--> Kill de check.hta (père) pour ne laisser tourner que temp.hta(fils)
--> Fin du script, puis del temp.hta
Théoriquement ca ca devrait fonctionner :
WshShell.Run("c:\windows\System32\mshta.exe E:\Scripts\HTA\temp.hta "),1,true
mais en fait non
Comme le père est lancé en 64 bits, le fils est aussi lancé en 64 bits mais ça ne devrait pas,
J'ai 2 processus :
check.hta (mshta.exe*32) --> 64 bits
temp.hta (mshta.exe*32) --> 64 bits
Au lieu de :
check.hta (mshta.exe*32) --> 64 bits
temp.hta (mshta.exe*32) --> 32 bits
Si vous avez une solution ou si vous avez déjà eu ce genre de problème, je suis preneur.
Merci d'avance.
Partager