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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2013, 15:16   #1
dimon131
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 10
По умолчанию Использование реестра

Здравствуйте.

У меня стоит Windows 7 Servies Pack 1, но при чтении информации с регистра мне выдаёт что у меня стоит Windows XP Servies Pack 3

Вот код:

var Register: TRegistry;
begin
Registry:=TRegistry.Create;
Registry.RootKey:=HKEY_LOCAL_MACHIN E;
Registry.OpenKey('SOFTWARE\Microsof t\Windows NT\CurrentVersion', False);
Result:=Registry.ReadString('Produc tName');
Registry.Free;
end;
dimon131 вне форума Ответить с цитированием
Старый 03.02.2013, 19:02   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Посмотри что там у тебя написано в реестре. Значит там у тебя написано ХР.
FaTaL вне форума Ответить с цитированием
Старый 04.02.2013, 08:38   #3
KPu3uC B Poccuu
 
Регистрация: 03.02.2013
Сообщений: 7
По умолчанию

Вдруг у него включен режим совместимости с Windows XP?
KPu3uC B Poccuu вне форума Ответить с цитированием
Старый 04.02.2013, 13:09   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Цитата:
Сообщение от KPu3uC B Poccuu Посмотреть сообщение
Вдруг у него включен режим совместимости с Windows XP?
Да без разницы что там включено. В реестре то всё равно должна быть определенная строка.
FaTaL вне форума Ответить с цитированием
Старый 04.02.2013, 19:20   #5
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Если вам просто надо определить версию винды, то вот:
Код:
Как узнать версию Windows?
// Способ первый
// Win95 или выше и NT3.5 или выше
function GetWinVer: string;
var
  temp1, temp2, temp3:  integer;
  OsVer: OSVERSIONINFO;
begin
   OsVer.dwOSVersionInfoSize := SizeOf( OSVERSIONINFO );
   GetVersionEx( OsVer );
   temp1 := OsVer.dwMajorVersion;
   temp2 := OsVer.dwMinorVersion;
   temp3 := OsVer.dwPlatformId;
 
   if temp1 = 4 then
      if temp2 = 0 then
         if temp3 = VER_PLATFORM_WIN32_WINDOWS then
            Result := 'Windows 95';
 
   if temp1 = 4 then
      if temp2 = 10 then
         Result := 'Windows 98';
 
   if temp1 = 4 then
      if temp2 = 90 then
         Result := 'Windows Me';
 
   if temp1 = 3 then
      if temp2 = 51 then
         Result := 'Windows NT 3.51';
 
   if temp1 = 4 then
      if temp2 = 0 then
         Result := 'Windows NT 4.0';
 
   if temp1 = 5 then
      if temp2 = 0 then
         Result := 'Windows 2000';
 
   if temp1 = 5 then
      if temp2 = 1 then
         Result := 'Windows XP';
 
   if temp1 = 6 then
      if temp2 = 0 then
         Result := 'Windows Vista';
 
   if temp1 = 6 then
      if temp2 = 1 then
         Result := 'Windows 7';
end;
 
// Способ второй
{true = Win9x, false = NT}
function isWin9x: Bool;
asm
   xor eax, eax
   mov ecx, cs
   xor cl, cl
   jecxz @@quit
   inc eax
   @@quit:
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
   if isWin9x then
      Form1.Caption := 'Win9x'
   else
      Form1.Caption := 'WinNT';
end;
 
// Способ третий
procedure TForm1.FormCreate(Sender: TObject);
begin
   case Win32Platform of
      VER_PLATFORM_WIN32s: ShowMessage( 'System is Win32s' );
      VER_PLATFORM_WIN32_WINDOWS: ShowMessage( 'System is Windows 95' );
      VER_PLATFORM_WIN32_NT: ShowMessage( 'System is Windows NT' );
   end;
end;
 
// Способ четвертый
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
   s := 'Win32Platform = ' + IntToStr( Win32Platform ) + #13 +
        'Win32MajorVersion = ' + IntToStr( Win32MajorVersion ) + #13 +
        'Win32MinorVersion = ' + IntToStr( Win32MinorVersion ) + #13 +
        'Win32BuildNumber = ' + IntToStr( Win32BuildNumber );
   ShowMessage( s );
end;
 
// Способ пятый
procedure TForm1.Button1Click(Sender: TObject);
begin
   if CheckWin32Version( 6, 1 ) then
      ShowMessage( 'Windows 7' )
   else
   if CheckWin32Version( 6, 0 ) then
      ShowMessage( 'Windows Vista' )
   else
   if CheckWin32Version( 5, 1 ) then
      ShowMessage( 'Windows XP' )
   else
   if CheckWin32Version( 5, 0 ) then
      ShowMessage( 'Windows 2000' );
end;
и еще
Код:
type
  TWinVersion = (wvUnknown, wv95, wv98, wvME, wvNT3, wvNT4, wvW2K, wvXP);

function DetectWinVersion: TWinVersion;
var
  OSVersionInfo: TOSVersionInfo;
begin
  Result := wvUnknown;
  OSVersionInfo.dwOSVersionInfoSize := sizeof(TOSVersionInfo);
  if GetVersionEx(OSVersionInfo) then
  begin
    case OSVersionInfo.DwMajorVersion of
      3: Result := wvNT3;
      4: case OSVersionInfo.DwMinorVersion of
          0: if OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then
              Result := wvNT4
            else
              Result := wv95;
          10: Result := wv98;
          90: Result := wvME;
        end;
      5: case OSVersionInfo.DwMinorVersion of
          0: Result := wvW2K;
          1: Result := wvXP;
        end;
    end;
  end;
end;

function DetectWinVersionStr: string;
const
  VersStr: array[TWinVersion] of string = (
    'Unknown',
    'Windows 95',
    'Windows 98',
    'Windows ME',
    'Windows NT 3',
    'Windows NT 4',
    'Windows 2000',
    'Windows XP');
begin
  Result := VersStr[DetectWinVersion];
end;
Кольша вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очистка реестра KennyHack Visual C++ 7 03.03.2011 15:08
Мониторинг реестра. MotoArhangel Общие вопросы Delphi 6 25.02.2011 17:34
Монитор реестра -iG- Общие вопросы C/C++ 3 16.05.2010 14:27
Эмуляция реестра Simply-Art Общие вопросы Delphi 20 06.09.2009 15:31
Мониторинг реестра AidarBik Безопасность, Шифрование 4 30.09.2007 15:31