Конференция "WinAPI" » Определение типа ОС [D6, WinXP]
 
  • leonidus (18.02.10 20:53) [0]
    Как определить тип ОС вместе с сервиспаком? Под типом я подразумеваю название (нужно выбирать между XP,Vista и Seven) и разрядность 32 или 64 ? Все что есть в инете определяет в лучшем случае до висты, а с разрядностью вообще темный лес... Подскажите пожалуйста!
  • DVM © (18.02.10 21:10) [1]

    ////////////////////////////////////////////////////////////////////////////////
    //
    //  ****************************************************************************
    //  * Unit Name : uWinVersion
    //  * Purpose   : Класс для определения версии Windows
    //  * Author    : Dmitry V. Muratov
    //  * Version   : 2.1
    //  * Home Page :
    //  ****************************************************************************
    //

    unit uWinVersion;

    interface

    uses
     Windows, SysUtils, Classes;

    type

     TOSPlatform = (
       ospWinNT,               // Windows NT platform
       ospWin9x,               // Windows 9x platform
       ospWin32s               // Win32s platform
     );

     TOSProduct = (
       osUnknownWinNT,         // Unknown Windows NT OS
       osWinNT,                // Windows NT (up to v4)
       osWin2K,                // Windows 2000
       osWinXP,                // Windows XP
       osUnknownWin9x,         // Unknown Windows 9x OS
       osWin95,                // Windows 95
       osWin98,                // Windows 98
       osWinMe,                // Windows Me
       osUnknownWin32s,        // Unknown OS running Win32s
       osWinSvr2003,           // Windows Server 2003
       osUnknown,              // Completely unknown Windows
       osWinVista,             // Windows Vista
       osWinSvr2003R2,         // Windows Server 2003 R2
       osWinSvr2008,           // Windows Server 2008
       osWinLater,             // A later version of Windows than v6.1
       osWin7,                 // Windows 7
       osWinSvr2008R2          // Windows Server 2008 R2
     );

     TProcessorArchitecture = (
       paUnknown,    // Unknown architecture
       paX64,        // X64 (AMD or Intel)
       paIA64,       // Intel Itanium processor family (IPF)
       paX86         // Intel 32 bit
     );

     ESysInfo = class(Exception);

     TOSInfo = class(TObject)
     private
       class function EditionFromProductInfo: string;
       class function CheckSuite(const Suite: Integer): Boolean;
       class function EditionFromReg: string;
       class function IsNT4SP6a: Boolean;
       class function ProductTypeFromReg: string;
     public
       class function IsWin9x: Boolean;
       class function IsWinNT: Boolean;
       class function IsWin32s: Boolean;
       class function IsWow64: Boolean;
       class function IsServer: Boolean;
       class function IsMediaCenter: Boolean;
       class function IsTabletPC: Boolean;
       class function IsRemoteSession: Boolean;
       class function IsWinVista: Boolean;
       class function IsWinServer2008: Boolean;
       class function IsWinServer2008R2: Boolean;
       class function IsWin7: Boolean;
       class function HasPenExtensions: Boolean;
       class function Platform: TOSPlatform;
       class function Product: TOSProduct;
       class function ProductName: string;
       class function MajorVersion: Integer;
       class function MinorVersion: Integer;
       class function BuildNumber: Integer;
       class function ServicePackString: string;
       class function ServicePackMajor: Integer;
       class function ServicePackMinor: Integer;
       class function EditionString: string;
       class function Description: string;
       class function ProductID: string;
       class function GetTrueWindowsVersion: TOSProduct;
     end;

    var
     Win32HaveExInfo: Boolean = False;
     Win32ServicePackMajor: Integer = 0;
     Win32ServicePackMinor: Integer = 0;
     Win32SuiteMask: Integer = 0;
     Win32ProductType: Integer = 0;
     Win32HaveProductInfo: Boolean = False;
     Win32ProductInfo: LongWord = 0;

  • leonidus (18.02.10 21:13) [2]
    DVM спасибо, но это только описание класса, а как на счет непосредственно функций реализующих определение типов ОС?
  • DVM © (18.02.10 21:15) [3]
  • leonidus (19.02.10 18:26) [4]
    Большое спасибо!

    DVM, подскажите плиз, как работать с классом? Нам в общем много лишнего, мне же нужно определить только тип ОС и SP, разрядность я определил уже другим способом.
  • leonidus (19.02.10 18:28) [5]
    Прошу прощения, ступил. Все встало на свои места, большое спасибо еще раз!
 
Конференция "WinAPI" » Определение типа ОС [D6, WinXP]
Есть новые Нет новых   [134432   +18][b:0][p:0.003]