Bonjour a tous,
Je ne suis pas sur que ce soit la bonne section, mais tant pis...
J'aimerais pouvoir connaitre le type d'architecture d'un OS Windows, a savoir s'il est en version 64 bits ou non. Si j'ai ce besoin, c'est a cause de la portabilite d'une appli 32bits sur un OS 64 bits et de l'appel a un programme externe. En gros, sur un systeme 64 bits, WOW64 redirige mon chemin d'appel du programme vers %windir%\sysWOW64 alors que je dois appeler un programme dans %windir%\system32 . Le programme devant fonctionner sur tous les windows server depuis le 2000, je ne peux pas utiliser l'appel a "Wow64DisableWow64FsRedirection" (qui de toute maniere n'existe pas sur ma machine, un WinXP).
Donc je comptais pouvoir detecter le type d'OS, 32 ou 64 bits, mais je n'y arrive pas:
Je me retrouve toujours dans la condition "else", avec comme valeur pour si1.dwProcessorType une valeur a 586, soit un INTEL_PENTIUM... Et le wProcessorArchitecture reste definitivement a 0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 OSVERSIONINFOEX osvi1; SYSTEM_INFO si1; ZeroMemory(&osvi1, sizeof(OSVERSIONINFOEX)); osvi1.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); GetVersionEx((LPOSVERSIONINFOW)&osvi1); GetSystemInfo(&si1); if (si1.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) printf("si1.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64"); else if (si1.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64) printf("si1.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64"); else printf("Proc val is %d // %d", si1.wProcessorArchitecture, si1.dwProcessorType);
Quelqu'un saurait-il comment savoir si l'OS est un 64 bits ou un 32, que ce soit compilable sur WinXP, compatible sur win2000 server et plus (win2003 server, win2008 server) ?
Merci a tous![]()
Partager