mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 22:45:39 +02:00
83 lines
2.4 KiB
ObjectPascal
83 lines
2.4 KiB
ObjectPascal
unit U_CheckWinVer;
|
|
|
|
interface
|
|
uses
|
|
Windows;
|
|
var
|
|
//Ðåàëüíàÿ âåðñèÿ ÎÑ, à íå òà ÷òî âûäàåòñÿ ñèñòåìîé ïðè çàïóñêå
|
|
//â ðåæèìå ñîâìåñòèìîñòè
|
|
Win32MajorVersionReal: Integer;
|
|
Win32MinorVersionReal: Integer;
|
|
|
|
implementation
|
|
type
|
|
PPEB=^PEB;
|
|
PEB = record
|
|
InheritedAddressSpace: Boolean;
|
|
ReadImageFileExecOptions: Boolean;
|
|
BeingDebugged: Boolean;
|
|
Spare: Boolean;
|
|
Mutant: Cardinal;
|
|
ImageBaseAddress: Pointer;
|
|
LoaderData: Pointer;
|
|
ProcessParameters: Pointer; //PRTL_USER_PROCESS_PARAMETERS;
|
|
SubSystemData: Pointer;
|
|
ProcessHeap: Pointer;
|
|
FastPebLock: Pointer;
|
|
FastPebLockRoutine: Pointer;
|
|
FastPebUnlockRoutine: Pointer;
|
|
EnvironmentUpdateCount: Cardinal;
|
|
KernelCallbackTable: PPointer;
|
|
EventLogSection: Pointer;
|
|
EventLog: Pointer;
|
|
FreeList: Pointer; //PPEB_FREE_BLOCK;
|
|
TlsExpansionCounter: Cardinal;
|
|
TlsBitmap: Pointer;
|
|
TlsBitmapBits: array[0..1] of Cardinal;
|
|
ReadOnlySharedMemoryBase: Pointer;
|
|
ReadOnlySharedMemoryHeap: Pointer;
|
|
ReadOnlyStaticServerData: PPointer;
|
|
AnsiCodePageData: Pointer;
|
|
OemCodePageData: Pointer;
|
|
UnicodeCaseTableData: Pointer;
|
|
NumberOfProcessors: Cardinal;
|
|
NtGlobalFlag: Cardinal;
|
|
Spare2: array[0..3] of Byte;
|
|
CriticalSectionTimeout: LARGE_INTEGER;
|
|
HeapSegmentReserve: Cardinal;
|
|
HeapSegmentCommit: Cardinal;
|
|
HeapDeCommitTotalFreeThreshold: Cardinal;
|
|
HeapDeCommitFreeBlockThreshold: Cardinal;
|
|
NumberOfHeaps: Cardinal;
|
|
MaximumNumberOfHeaps: Cardinal;
|
|
ProcessHeaps: Pointer;
|
|
GdiSharedHandleTable: Pointer;
|
|
ProcessStarterHelper: Pointer;
|
|
GdiDCAttributeList: Pointer;
|
|
LoaderLock: Pointer;
|
|
OSMajorVersion: Cardinal;
|
|
OSMinorVersion: Cardinal;
|
|
OSBuildNumber: Cardinal;
|
|
OSPlatformId: Cardinal;
|
|
ImageSubSystem: Cardinal;
|
|
ImageSubSystemMajorVersion: Cardinal;
|
|
ImageSubSystemMinorVersion: Cardinal;
|
|
GdiHandleBuffer: array [0..33] of Cardinal;
|
|
PostProcessInitRoutine: Cardinal;
|
|
TlsExpansionBitmap: Cardinal;
|
|
TlsExpansionBitmapBits: array [0..127] of Byte;
|
|
SessionId: Cardinal;
|
|
end;
|
|
|
|
//Ïîëó÷èòü áëîê PEB ñâîåãî ïðîöåññà
|
|
function GetPDB: PPEB; stdcall;
|
|
asm
|
|
MOV EAX, DWORD PTR FS:[30h]
|
|
end;
|
|
initialization
|
|
//Ïîëó÷àåì ðåàëüíóþ âåðñèþ ÎÑ
|
|
Win32MajorVersionReal := GetPDB^.OSMajorVersion;
|
|
Win32MinorVersionReal := GetPDB^.OSMinorVersion;
|
|
|
|
end.
|