J'ai acheté il y a quelques mois une machine équipée d'un Core 2 Duo. Jusque là, rien d'exceptionnel. Ces CPU gère le 64-bits, je me suis donc dit, installe un Vista x64. Tout fonctionne parfaitement bien ... sauf un de mes disques durs. Un petit crash de MFT, les boulles.
Je me suis donc rendu sur le site du constructeur du disque et j'ai téléchargé une appli de diagnostic des disques. Quel rapport me direz-vous ? L'application est écrite en .Net, hé oui.
Le seul petit soucis, c'est qu'il m'était impossible de lancer cette application. Pourquoi ? L'application que l'on lance était compilé avec le flag "AnyCPU", la configuration par défaut lorsque l'on travaille avec Visual Studio. En revanche, une des assemblies référencée par l'application était compilée avec le flag x86. D'où un message d'erreur de ce type :

Au début, je me suis dit que l'assembly référencée était peut-être mal copié et qu'elle n'était pas valide. J'ai donc réinstallé l'ensemble mais toujours pareil. C'est là que je me suis dit que ça pouvait être un souci de différence de CPU cible. Le x64 est rependu, mais les OS l'utilisant sont encore marginaux. Je me suis donc creusé un peu la cervelle pour savoir si je pouvais forcer l'application à s'exécuter en mode 32 bits. Et Microsoft a pensé à tout. Il suffit de passer par l'utilitaire "CorFlags" fournit avec le SDK du Framework 2.0. Cet utilitaire fourni un certain nombre d'options, mais celle qui nous intéresse ici est /32BITS+.
La commande est simple : corflags monappli.exe /32BITS+
Et maintenant plus de soucis, mon utilitaire de diagnostics démarre, reste à savoir si je pourrais récupérer mon disque.