У меня есть два файла .exe, и я хотел бы создать одну программу, которая сможет запускать одну из них в зависимости от размера Windows (например, запустить program1.exe
если 64-разрядный, и запустить program2.exe
если 32-разрядный). ). Кто-нибудь знает, с чего мне начать искать?
2 ответа
Вы можете использовать простой скрипт Windows Powershell в качестве средства запуска.
Вот как вы можете рассказать свою архитектуру из PS: http://depsharee.blogspot.com/2011/06/how-do-detect-operating-system.html
Идея состоит в том, чтобы проверить, сколько байтов имеет структура IntPtr. 4 => 32b, 8 => 64b.
Если вы действительно хотите exe, в DotNet вы можете использовать эту проверку, чтобы определить, является ли его 64b:
BOOL Is64BitWindows() {
#if defined(_WIN64)
return TRUE; // 64-bit programs run only on Win64
#elif defined(_WIN32)
// 32-bit programs run on both 32-bit and 64-bit Windows
// so must sniff
BOOL f64 = FALSE;
return IsWow64Process(GetCurrentProcess(), &f64) && f64;
#else
return FALSE; // Win64 does not support Win16
#endif
}
больше информации здесь: http://blogs.msdn.com/b/oldnewthing/archive/2005/02/01/364563.aspx
Вы всегда можете проверить переменную окружения %programfiles(x86)%
. Если это 64-битный компьютер с Windows, он вернет путь к «Program Files (x86)», если он не 64-битный, он не будет определен и просто вернет «% programfiles (x86)%».
Вы можете проверить это с помощью пакета, PS, .Net или чего угодно. :)