Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Script pour préciser à VISTA x64 d'utiliser les DLL 32bits (émulation 32bits par VISTA)

5 réponses
Avatar
teddy
Bonjour à tous,

Je cherche un script (ou tout autre programme du même type) pour obliger VISTA x64 à utiliser les DLL du dossier \System32 pour
faire tourner une application compilée en VB6 sous XP 32bits (mode "émulation" 32bits de VISTA x64).

Je précise que ladite application fonctionne très bien sous VISTA 32bits.

Auriez-vous quelques idées ?
Merci beaucoup par avance.

Teddy

5 réponses

Avatar
Gilles LAURENT [MVP]
"teddy" wrote:

Bonjour à tous,



Bonjour,

Je cherche un script (ou tout autre programme du même type) pour obliger VISTA x64 à utiliser les DLL du dossier System32 pour
faire tourner une application compilée en VB6 sous XP 32bits (mode "émulation" 32bits de VISTA x64).

Je précise que ladite application fonctionne très bien sous VISTA 32bits.

Auriez-vous quelques idées ?
Merci beaucoup par avance.



Un binaire 32 bits n'est pas en mesure de charger une librairie 64 bits. Le
support 32 bits est assuré par le sous-système WOW64 qui redirige
automatiquement et de manière transparente tous les appels vers le dossier
système 32 bits SysWow64. Ais-je bien compris votre question ?

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
teddy
Bonjour,

Donc d'après vous, VISTA x64 redirige automatiquement et de manière transparente tous les appels vers le dossier --> système 32 bits
SysWow64.

Malheureusement, l'application se lance bien sous VISTA x64.
Toutefois, dès que l'on veut faire appel à une de ses fonctions, l'application s'arrête et une boîte de dialogue (VISTA) s'affiche
indiquant qu'une DLL (32bits bien présente dans le dossier System32) n'a pas été trouvée dans SysWow64.

Sous VISTA 32bits sur un autre ordinateur (celui duquel je tape ce mail !), tout marche nickel bien sûr.

Voilà, que faut-il en penser ?
Peut-on trouver une méthode pour forcer l'appel vers le bon dossier de DLL dans le système ?

Teddy



" teddy" a écrit dans le message de news:
Bonjour à tous,

Je cherche un script (ou tout autre programme du même type) pour obliger VISTA x64 à utiliser les DLL du dossier System32 pour
faire tourner une application compilée en VB6 sous XP 32bits (mode "émulation" 32bits de VISTA x64).

Je précise que ladite application fonctionne très bien sous VISTA 32bits.

Auriez-vous quelques idées ?
Merci beaucoup par avance.

Teddy




Avatar
Gilles LAURENT [MVP]
"teddy" wrote:

Bonjour,



Bonjour,

Donc d'après vous, VISTA x64 redirige automatiquement et de manière transparente tous les appels vers le dossier --> système 32 bits
SysWow64.



Tout à fait.

Malheureusement, l'application se lance bien sous VISTA x64.
Toutefois, dès que l'on veut faire appel à une de ses fonctions, l'application s'arrête et une boîte de dialogue (VISTA) s'affiche
indiquant qu'une DLL (32bits bien présente dans le dossier System32) n'a pas été trouvée dans SysWow64.



Pourquoi ne pas déposer cette librairie 32 bits dans le dossier SysWow64 ?
Dans ce cas, il n'y aura plus de problème de chargement.

Sous VISTA 32bits sur un autre ordinateur (celui duquel je tape ce mail !), tout marche nickel bien sûr.

Voilà, que faut-il en penser ?
Peut-on trouver une méthode pour forcer l'appel vers le bon dossier de DLL dans le système ?



Oui, plusieurs méthodes sont envisageables. Vous pouvez soit désactiver la
redirection du dossier système avec l'API Wow64DisableWow64FsRedirection (la
désactivation de la redirection n'est valable que pour le thread courant) ou
alors charger dynamiquement la librairie située dans le dossier natif
System32 en indiquant le chemin %windir%Sysnative. Tout dépend la manière
dont est architecturée votre application. Je suppose ici que vous possèder le
code VB et que vous êtes en mesure de le recompiler.

File System Redirector :
<http://msdn.microsoft.com/en-us/library/aa384187(VS.85).aspx>

Wow64DisableWow64FsRedirection :
<http://msdn.microsoft.com/en-us/library/aa365743(VS.85).aspx>

Note: J'utilise cette technique avec mon outil StartMax. En désactivant
temporairement la redirection, l'outil est en mesure de démarrer des
applications 64 bits situées dans le dossier natif System32. En revanche,
pour démarrer des applications 32 bits, il est nécessaire de spécifier le
chemin vers le dossier SysWow64.

StartMax :
<http://glsft.free.fr/index.php?option=com_content&task=view&idR&Itemid(>

Note: N'hésitez pas à me contacter par voie de messagerie si cela n'est pas
clair.

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
Méta-MCI \(MVP\)
Bonsoir !

J'arrive un peu en retard.
Est-ce qu'il ne suffirait pas de copier les DLL en question dans le
dossier de l'application ? Normalement, elles devraient y être
recherchées.

Je sais que cela va à l'encontre de la mutualisation des ressources (des
DLL), mais cela permettrait déjà de tester.

@-salutations
--
Michel Claveau
Avatar
teddy
Merci à tous pour vos suggestions.

Je vais investiguer et tester vos propositions de solutions dès que possible.
En effet, HP m'a repris la machine toute neuve (fin sept.2008) sous VISTA x64 pour changer le disque dur qui faisait des erreurs
signalée par le diagnostic BIOS !
J'ai de la chance sur toute la ligne et bravo HP.
Donc à suivre...

Teddy