Lorsqu'une application 32bit comme java ou python tente d'ouvrir c:\windows\system32\bash.exe
ce fichier est tout simplement introuvable.
Par contre, il fonctionne parfaitement si le processus est en 64bit. J'ai créé une simple application en C pour vérifier son fonctionnement.
#include <stdio.h>
#include <windows.h>
int main(int argc, char *argv[]) {
char* path;
OFSTRUCT junk;
if (argc != 2) {
printf("provide path to file");
return 1;
}
path = argv[1];
if( fopen( path, "r")) {
printf("OK: Runtime reports file exists");
} else {
printf("ERR: Runtime reports file does not exist");
}
printf("\n");
if (OpenFile(path, &junk,OF_EXIST) != HFILE_ERROR) {
printf("OK: Win32API reports file exists");
} else {
printf("ERR: Win32API reports file does not exist");
}
return 0;
}
Il indique OK/OK lorsqu'il est compilé et lié en x64 et ERR/ERR lorsqu'il est compilé en x86. Comment cela se fait-il ? Existe-t-il un moyen de "cacher" un fichier aux applications 32 bits sous Windows ?