problem 32 bit sur 64 bit
problem 32 bit sur 64 bit
bonjour
j'ecrit un petit programme, et je voudrais faire une seul version, 32 bit, et la distribuer aussi pour les 64 bit.
jusque la pas de probleme, mais quand j'essaye d'acceder au dossier system32, et je compile en 32 sur une machine (windows) 64, ca me redirige automatiquement au dossier sys64wow!!!
c'est un bug? il y a une solution pour arriver au dossier system32?
merci
j'ecrit un petit programme, et je voudrais faire une seul version, 32 bit, et la distribuer aussi pour les 64 bit.
jusque la pas de probleme, mais quand j'essaye d'acceder au dossier system32, et je compile en 32 sur une machine (windows) 64, ca me redirige automatiquement au dossier sys64wow!!!
c'est un bug? il y a une solution pour arriver au dossier system32?
merci
Windows 10 x64 -- Purebasic 5.70 LTS x86
Re: problem 32 bit sur 64 bit
Bonjour,
Sur une version 64-bit de Windows, les noms System32 et Sys64Wow sont trompeurs.
System32 contient les éléments 64bits et Sys64Wow contient les éléments 32bits
Par exemple les DLL 64 vont dans System32 alors que les DLL 32 vont dans Sys64Wow
Si une application 32 essaye de joindre System32 elle est redirigée vers Sys64Wow
Donc, le comportement que tu signale me parait tout a fait normal.
Sur une version 64-bit de Windows, les noms System32 et Sys64Wow sont trompeurs.
System32 contient les éléments 64bits et Sys64Wow contient les éléments 32bits
Par exemple les DLL 64 vont dans System32 alors que les DLL 32 vont dans Sys64Wow
Si une application 32 essaye de joindre System32 elle est redirigée vers Sys64Wow
Donc, le comportement que tu signale me parait tout a fait normal.
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: problem 32 bit sur 64 bit
Ok, et si je veux tout de même accéder a system32, il n'y a pas moyen ?
Windows 10 x64 -- Purebasic 5.70 LTS x86
Re: problem 32 bit sur 64 bit
cage a écrit :Bonjour,
Sur une version 64-bit de Windows, les noms System32 et Sys64Wow sont trompeurs.
System32 contient les éléments 64bits et Sys64Wow contient les éléments 32bits
Par exemple les DLL 64 vont dans System32 alors que les DLL 32 vont dans Sys64Wow
Si une application 32 essaye de joindre System32 elle est redirigée vers Sys64Wow
Donc, le comportement que tu signale me parait tout a fait normal.

Re: problem 32 bit sur 64 bit
Microsoft a introduit quelques limitations pour les applications 32 exécutées sur Win64
Par exemple, une application 32 ne peut exécuter telnet.exe et quelques autres exe
De même, une application 32 qui fait appel a une DLL la cherchera dans Sys64Wow
Mais une application 32 peut toujours accéder a System32 en dehors des contraintes imposées par Microsoft pour des applications 32 tournant sur un Win64
Ce n'est pas moi qui l'invente, et pour l'avoir expérimenté a mes dépends, je fourni toujours une version 32 et 64-bit des mes applications et j’empêche la version 32 d'être exécutée sur un Win64
Par exemple, une application 32 ne peut exécuter telnet.exe et quelques autres exe
De même, une application 32 qui fait appel a une DLL la cherchera dans Sys64Wow
Mais une application 32 peut toujours accéder a System32 en dehors des contraintes imposées par Microsoft pour des applications 32 tournant sur un Win64
Ce n'est pas moi qui l'invente, et pour l'avoir expérimenté a mes dépends, je fourni toujours une version 32 et 64-bit des mes applications et j’empêche la version 32 d'être exécutée sur un Win64
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: problem 32 bit sur 64 bit
Merci pour les infos, c'est le genre de détails qu'il vaut mieux connaître, et qu'on ne peut absolument pas deviner...
Re: problem 32 bit sur 64 bit
Merci beaucoup
Donc en fin de compte il y a moyen d'acceder ou pas?
Envoyé de mon iPhone en utilisant Tapatalk
Donc en fin de compte il y a moyen d'acceder ou pas?
Envoyé de mon iPhone en utilisant Tapatalk
Windows 10 x64 -- Purebasic 5.70 LTS x86
Re: problem 32 bit sur 64 bit
Oui, bien sur.
Une Application 32 peut toujours accéder au répertoire System32 sous Win64
Lister le répertoire par exemple, rechercher les exe (sauf Telnet.exe, SnippingTool.exe, ...)
Ton application 32 ne pouvant voir les exe ci dessus, elle ne pourra les exécuter.
Une Application 32 peut toujours accéder au répertoire System32 sous Win64
Lister le répertoire par exemple, rechercher les exe (sauf Telnet.exe, SnippingTool.exe, ...)
Ton application 32 ne pouvant voir les exe ci dessus, elle ne pourra les exécuter.
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: problem 32 bit sur 64 bit
La preuve par l'exemple :
Sous un Windows 64 bit
ça te retournera 0 en compilant en pb x86 et ça te retourne 1 (en laçant le programme) en compilant en x64
Sous un Windows 64 bit
Code : Tout sélectionner
ExamineEnvironmentVariables()
prog$ = GetEnvironmentVariable("SystemRoot")+"\system32\SnippingTool.exe"
Debug RunProgram(prog$,"","")
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: problem 32 bit sur 64 bit
Bonjour,
Merci pour ces précisions très pratique. Une question me taraude l'esprit dans la même logique, une application PB X64 peu utiliser a une Dll x32 ou pas (je demande pour un logiciel perso que je fait et pour le moment je n'arrive justement a rien)?
Cordialement,
GallyHC
Merci pour ces précisions très pratique. Une question me taraude l'esprit dans la même logique, une application PB X64 peu utiliser a une Dll x32 ou pas (je demande pour un logiciel perso que je fait et pour le moment je n'arrive justement a rien)?
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: problem 32 bit sur 64 bit
Dans l'absolu je dirai oui si tout est conforme dans le Dll (rien qu'à voir les .L au lieu des .i qui peuvent mettre la pagaille..)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: problem 32 bit sur 64 bit
Je n'utilise pas de DLL directement dans mes applications PB
mais hormis VB et peut-être d'autres logiciels qui nécessitent que les DLL soient dans le bon répertoire système et enregistrées, pas mal d'applications fonctionnent en copiant directement les DLL dans le même répertoire que les exe.
Par exemple, si on n'a pas les droits administrateur et qu'un logiciel nécessite un VCR (Visual C++ Redistribuable) particulier, il suffit d'extraire les DLL du VCR et de les copier dans le répertoire de l'exe.
Dans ton cas, essaye de copier la DLL dans System32, Sys64Wow et dans le répertoire de ton exe
Si cela fonctionne, essaye en enlevant une a une les DLL
mais hormis VB et peut-être d'autres logiciels qui nécessitent que les DLL soient dans le bon répertoire système et enregistrées, pas mal d'applications fonctionnent en copiant directement les DLL dans le même répertoire que les exe.
Par exemple, si on n'a pas les droits administrateur et qu'un logiciel nécessite un VCR (Visual C++ Redistribuable) particulier, il suffit d'extraire les DLL du VCR et de les copier dans le répertoire de l'exe.
Dans ton cas, essaye de copier la DLL dans System32, Sys64Wow et dans le répertoire de ton exe
Si cela fonctionne, essaye en enlevant une a une les DLL
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: problem 32 bit sur 64 bit
@Cage : +1
voici comment windows fait pour recharcher les dll :
https://msdn.microsoft.com/fr-fr/library/7d83bc18.aspx
voici donc l'ordre de recherche de Windows pour les DLL
voici comment windows fait pour recharcher les dll :
https://msdn.microsoft.com/fr-fr/library/7d83bc18.aspx
voici donc l'ordre de recherche de Windows pour les DLL
Avec une liaison à la fois implicite et explicite, Windows recherche d'abord les « DLL connues », telles que Kernel32.dll et User32.dll. Windows recherche ensuite les DLL dans les emplacements suivants selon l'ordre indiqué :
1- Le répertoire contenant le module exécutable du processus en cours.
2- Le répertoire actif.
3- Le répertoire System de Windows. La fonction GetSystemDirectory récupère le chemin de ce répertoire.
4- Le répertoire Windows. La fonction GetWindowsDirectory récupère le chemin de ce répertoire.
5- Les répertoires désignés dans la variable d'environnement PATH.
Re: problem 32 bit sur 64 bit
Oh merde, comme quoi faut lire la doc, j'aurai parié sur un ordre fort différent °_°;Zorro a écrit :@Cage : +1
voici comment windows fait pour recharcher les dll :
https://msdn.microsoft.com/fr-fr/library/7d83bc18.aspx
voici donc l'ordre de recherche de Windows pour les DLL
Avec une liaison à la fois implicite et explicite, Windows recherche d'abord les « DLL connues », telles que Kernel32.dll et User32.dll. Windows recherche ensuite les DLL dans les emplacements suivants selon l'ordre indiqué :
1- Le répertoire contenant le module exécutable du processus en cours.
2- Le répertoire actif.
3- Le répertoire System de Windows. La fonction GetSystemDirectory récupère le chemin de ce répertoire.
4- Le répertoire Windows. La fonction GetWindowsDirectory récupère le chemin de ce répertoire.
5- Les répertoires désignés dans la variable d'environnement PATH.
Re: problem 32 bit sur 64 bit
Merci beaucoup pour toutes les explications détaillées, mais je n'ai toujours pas résolu mon problème.
Je crée un fichier test.txt et je le colle dans le dossier system32.
En compilant sur une machine 64, en 32, ça retourne -1, et en 64 ca donne la taille du fichier !
C'est pas un bug ça ?
Et si non, il y a moyen d'accéder a ce fichier en compilant en 32?
Je crée un fichier test.txt et je le colle dans le dossier system32.
Code : Tout sélectionner
debug filesize("c:\windows\system32\test.txt")
C'est pas un bug ça ?
Et si non, il y a moyen d'accéder a ce fichier en compilant en 32?
Windows 10 x64 -- Purebasic 5.70 LTS x86