Страница 3 из 3
Как определить разрядность Windows: 32 или 64
Добавлено: 25 Июль 2016, 22:46
Yufil
А нельзя эту инфу прочитать через GetEnvironmentVariable, переменные PROCESSOR_ARCHITECTURE и PROCESSOR_ARCHITEW6432 ?
https://blogs.msdn.microsoft.com/david. ... s-bitness/
Detection Logic
The logic that I use from a program to detect whether the OS is 32bit or 64bit looks like this:
IF PROCESSOR_ARCHITECTURE == amd64 OR
PROCESSOR_ARCHITEW6432 == amd64 THEN
// OS is 64bit
ELSE
// OS is 32bit
END IF
Как определить разрядность Windows: 32 или 64
Добавлено: 25 Июль 2016, 22:59
Yufil
Проверил, работает.... Только у меня AMD64 прописными...
Как определить разрядность Windows: 32 или 64
Добавлено: 25 Июль 2016, 23:31
Developer
kreator писал(а): Windows 10 Enterprise. А что такое LTSB?
Вот объяснение о версиях Windows 10:
https://social.technet.microsoft.com/Fo ... ogeneralRU
Oleg Fomin писал(а): Не забывайте добавлять к приложению соответствующий манифест, иначе Windows 10 прикидывается 8-кой и определение версии Windows будет некорректным. Источники информации указаны прямо в коде в комментах.
Так-то оно так, однако, для определения версии с помощью функции Clarion SYSTEM{PROP:WindowsVersion, 1} манифест не требуется
Олег, спасибо за твой вариант определения версии Windows! 
Как определить разрядность Windows: 32 или 64
Добавлено: 26 Июль 2016, 7:35
arlean1
извините за оффтопик, был длительный перерыв в работе с клашей: В какой версии появилась компиляция по 64, и есть для этой версии библиотека Олега Руденко? Помню была какая-то мутотень с установкой сервис пака с++ в какой-то версии и на этом остановился. Как сейчас - что дополнительное требуется?
Как определить разрядность Windows: 32 или 64
Добавлено: 26 Июль 2016, 10:04
Oleg Fomin
Developer писал(а): Олег, спасибо за твой вариант определения версии Windows!

На здоровье!

Как определить разрядность Windows: 32 или 64
Добавлено: 26 Июль 2016, 11:34
kreator
У меня манифест подключен. Проблема проявилась на одном устройстве, вот что странно. Определение Олега Фомина сработало как надо.
arlean1 писал(а):извините за оффтопик, был длительный перерыв в работе с клашей: В какой версии появилась компиляция по 64, и есть для этой версии библиотека Олега Руденко? Помню была какая-то мутотень с установкой сервис пака с++ в какой-то версии и на этом остановился. Как сейчас - что дополнительное требуется?
Компиляции 64bit нет пока. И, похоже, в одиннадцатой тоже не будет.
Как определить разрядность Windows: 32 или 64
Добавлено: 26 Июль 2016, 17:39
kreator
Разобрался в проблеме. У нас мульти-dll. Манифест в каталоге для exe лежит какой-то старый. Exe-шник перекомпилировал недавно при переходе на новый билд. Но манифест не поменялся. Удалил старый манифест, перекомпилил exe, всё стало путём. Подозреваю, при обновлении десятой Винды на других устройствах получу такие же проблемы. Либо кларионовские манифесты отличаются в зависимости от билда, но это вообще космос.
Как определить разрядность Windows: 32 или 64
Добавлено: 26 Июль 2016, 17:50
Губин Игорь
kreator писал(а): Либо кларионовские манифесты отличаются в зависимости от билда, но это вообще космос
Я линкую манифесты в экзешники
Как определить разрядность Windows: 32 или 64
Добавлено: 26 Июль 2016, 20:36
kreator
Губин Игорь писал(а):Я линкую манифесты в экзешники
У меня стоят галки "Generate Manifest" и "Link Generated Manifest in Project". При компиляции новым билдом манифест остался старым. Получается, что манифест не каждый раз генерится? Обращу на это внимание.
Как определить разрядность Windows: 32 или 64
Добавлено: 26 Июль 2016, 20:38
Дед Пахом
Кстати, приоритет имеет файл манифеста под ногами у exe над прилинкованным.