Как определить Win32 или Win64?
От: comandante serge  
Дата: 08.06.06 17:33
Оценка:
Здравствуйте, умные люди.
Памагите пажалуста.
Кто-нибудь разбирается в реестре windows?
Есть задача — определить версию windows на уровне Win32 она или Win64.
Сделать это нужно удаленно, предпочтительно читая реестр удаленной машины.
Ну или как-нибудь вообще, лишь бы сделать.
Есть ли в реестре информация о разрядности системы?

В каком-то топике msdn-a годичной давности пользователю
предлагалось узнать это по процессору x86 или ia64,
тогда 64-х разрядная windows работала только на итаниумах и было все просто.
Счас она может работать и на не итаниумах и на амд,
а еще 32-х разрядная ос может работать на 64-х разрядном процессоре.
В общем нужна видимо какая-то инфа об ос, а не о процессоре.
Кто-нибудь знает, как ее достать из реестра?
Памагите, плииз!!!
Re: Как определить Win32 или Win64?
От: Ihor Osovyak Украина  
Дата: 08.06.06 22:18
Оценка:
Здравствуйте, comandante serge, Вы писали:

try it:





uses Windows, SysUtils;


function IsWow64: Boolean;
type
  // Type of IsWow64Process API fn
  TIsWow64Process = function(Handle: Windows.THandle;
    var Res: Windows.BOOL): Windows.BOOL; stdcall;
var
  IsWow64Result: Windows.BOOL; // Result from IsWow64Process
  IsWow64Process: TIsWow64Process;
begin
  // Try to load required function from kernel32
  IsWow64Process := Windows.GetProcAddress(
    Windows.GetModuleHandle('kernel32'), 'IsWow64Process');
  if Assigned(IsWow64Process) then
  begin
    if not IsWow64Process(GetCurrentProcess, IsWow64Result) then
      raise SysUtils.Exception.Create('IsWow64: bad process handle');
    Result := IsWow64Result;
  end
  else
    Result := False;
end;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.