Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2008, 18:07   #1
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию Разрядность ОСи x86/x64

Как узнать битность системы x86 (32-х битная) или x64 (64-х битная)?
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 16.02.2008, 23:04   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

R:=TRegistry.Create;
R.RootKey:=HKEY_LOCAL_MACHINE;
R.OpenKey('SOFTWARE\Microsoft\Windo ws\CurrentVersion', False);
No:=R.ReadString('Version'); //ну и все прочее из этого ключа
R.Free;
mihali4 вне форума Ответить с цитированием
Старый 16.02.2008, 23:45   #3
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию

Странно, но такого пути в реестре нет...
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 16.02.2008, 23:58   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Опечатался... Читать нужно саму "CurrentVersion"...
Посмотрите через REGEDIT, какие там есть параметры и выберите нужные.
mihali4 вне форума Ответить с цитированием
Старый 17.02.2008, 00:01   #5
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Можно вызвать IsWow64Process (из kernel32.dll)
Код:
BOOL IsWow64Process(
  HANDLE hProcess,
  PBOOL Wow64Process
);
Для 32-х разрядного процесса в 64-х разрядной ОС будет установлена TRUE во втором параметре, для систем ниже WinXP (где нет смысла выяснять 64-х разрядность) будет ошибка ERROR_CALL_NOT_IMPLEMENTED, для 64-процесса и так всё ясно
B_N вне форума Ответить с цитированием
Старый 15.07.2010, 01:06   #6
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
По умолчанию

Достаточно прочитать переменную окружения

Код:
Label1.Caption:=GetEnvironmentVariable('PROCESSOR_ARCHITECTURE');
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 15.07.2010, 01:46   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а зачем некропостить?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.07.2010, 05:37   #8
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
По умолчанию

Долго искал ответ на этот вопрос, первым делом искал на этом форуме. Вдруг кто-нибудь будет так же искать Вот ему и ответ.
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 13.12.2010, 08:47   #9
hanabad
Новичок
Джуниор
 
Регистрация: 02.12.2010
Сообщений: 1
По умолчанию

Цитата:
Сообщение от NoName_emaNoN Посмотреть сообщение
Достаточно прочитать переменную окружения

Код:
Label1.Caption:=GetEnvironmentVariable('PROCESSOR_ARCHITECTURE');
У меня кажет х86 хотя это не так!
Может лучше просто проверить существование папки 'Program Files (x86)' ?
hanabad вне форума Ответить с цитированием
Старый 13.12.2010, 09:03   #10
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Код:
BOOL is64Bit = FALSE;
	IW64PFP IW64P = (IW64PFP)GetProcAddress(GetModuleHandle(L"kernel32.dll"), "IsWow64Process");
	if(IW64P != NULL)
	{
		IW64P(GetCurrentProcess(), &is64Bit);
	}
В итоге is64Bit будет хранить TRUE - 64 система, FALSE - 32. Перевести на дельфи не проблема. В принципе уже давали ответ.
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разрядность кода satanatas Помощь студентам 4 11.01.2008 18:15