获取当前系统版本号
来源:互联网 发布:免费php分类信息系统 编辑:程序博客网 时间:2024/05/16 08:27
获取当前系统版本号
unit WinVerUtils;
{
#===============================================================================
# Name: WinVerUtils.pas
# Author: Aleksander Oven
# Created: 2007-02-25
# Last Change: 2007-02-25
# Version: 1.0
# Description:
All about the version of the Windows OS.
Reference: http://msdn2.microsoft.com/en-us/library/ms724451.aspx
# Warnings and/or special considerations:
Source code in this file is free for personal and commercial use.
#===============================================================================
}
interface
type
TWindowsVersion = (
wvNotRecognized, wvWindows95, wvWindows95OSR2, wvWindows98, wvWindows98SE,
wvWindowsME, wvWindowsNT, wvWindowsNT35, wvWindowsNT40, wvWindows2000,
wvWindowsXP, wvWindowsXPSP2, wvWindowsXP64, wvWindowsServer2003,
wvWindowsVista, wvWindowsServerLonghorn
);
function GetWindowsVersion: TWindowsVersion;
function GetWindowsName: AnsiString;
function GetWindowsVersionString: AnsiString;
implementation
uses
Windows, SysUtils;
type
TOSVersionInfoExA = packed record
dwOSVersionInfoSize: DWORD;
dwMajorVersion: DWORD;
dwMinorVersion: DWORD;
dwBuildNumber: DWORD;
dwPlatformId: DWORD;
szCSDVersion: array[0..127] of AnsiChar;
wServicePackMajor: WORD;
wServicePackMinor: WORD;
wSuiteMask: WORD;
wProductType: Byte;
wReserved: Byte;
end;
const
cWindowsVersions: array [TWindowsVersion] of AnsiString = (
'Not recognized', 'Windows 95', 'Windows 95 OSR 2', 'Windows 98',
'Windows 98 Second Edition', 'Windows Millenium', 'Windows NT',
'Windows NT 3.5', 'Windows NT 4.0', 'Windows 2000', 'Windows XP',
'Windows XP Service Pack 2', 'Windows XP x64', 'Windows Server 2003',
'Windows Vista', 'Windows Server Longhorn'
);
function GetVersionExA(lpVersionInformation: Pointer): BOOL; stdcall;
external kernel32 name 'GetVersionExA';
function GetWindowsVersion: TWindowsVersion;
const
VER_NT_WORKSTATION = $01;
var
VI: TOSVersionInfoA;
VIEx: TOSVersionInfoExA;
begin
Result := wvNotRecognized;
VI.dwOSVersionInfoSize := SizeOf(TOSVersionInfoA);
if not GetVersionExA(@VI) then
Exit;
case VI.dwPlatformID of
VER_PLATFORM_WIN32_WINDOWS:
begin
case VI.dwMinorVersion of
0:
begin
if (VI.szCSDVersion[1] = 'B') then
Result := wvWindows95OSR2
else
Result := wvWindows95;
end;
10:
begin
if (VI.szCSDVersion[1] = 'A') then
Result := wvWindows98SE
else
Result := wvWindows98;
end;
90:
begin
if (VI.dwBuildNumber = $045A0BB8) then
Result := wvWindowsME;
end;
end;
end;
VER_PLATFORM_WIN32_NT:
begin
case VI.dwMajorVersion of
3: Result := wvWindowsNT35;
4: Result := wvWindowsNT40;
else
VIEx.dwOSVersionInfoSize := SizeOf(TOSVersionInfoExA);
if not GetVersionExA(@VIEx) then
VIEx.dwOSVersionInfoSize := 0;
case VI.dwMajorVersion of
5:
begin
case VI.dwMinorVersion of
0: Result := wvWindows2000;
1:
begin
if (Pos('Service Pack 2', AnsiString(VI.szCSDVersion)) > 0) then
Result := wvWindowsXPSP2
else
Result := wvWindowsXP;
end;
2:
begin
Result := wvWindowsXP64;
if (VIEx.dwOSVersionInfoSize > 0) and
(VIEx.wProductType <> VER_NT_WORKSTATION)
then
Result := wvWindowsServer2003;
end
else
Result := wvWindowsNT;
end;
end;
6:
begin
Result := wvWindowsVista;
if (VIEx.dwOSVersionInfoSize > 0) and
(VIEx.wProductType <> VER_NT_WORKSTATION)
then
Result := wvWindowsServerLonghorn;
end;
end;
end;
end;
end;
end;
function GetWindowsName: AnsiString;
begin
Result := cWindowsVersions[GetWindowsVersion];
end;
function GetWindowsVersionString: AnsiString;
var
VI: TOSVersionInfoA;
begin
VI.dwOSVersionInfoSize := SizeOf(TOSVersionInfoA);
if GetVersionExA(@VI) then
with VI do
Result := Trim(
Format(
'%d.%d build %d %s',
[dwMajorVersion, dwMinorVersion, dwBuildNumber, szCSDVersion]
)
)
else
Result := '';
end;
end.
- 获取当前系统版本号
- 获取Ipnone当前的系统版本号
- 如何获取 当前系统的 版本号?
- 获取unity当前版本号
- 获取当前程序版本号
- 获取当前版本号
- 获取当前版本号
- 获取当前应用版本号
- 获取unity当前版本号
- 获取当前应用版本号:
- android 获取当前版本号
- 获取当前应用版本号
- 获取当前版本号
- 获取App当前版本号
- 获取当前iOS版本号
- 获取当前应用的版本号和当前android系统的版本号
- Android 获取当前应用的版本号和当前系统的版本号
- 获取当前应用的版本号和当前android系统的版本号
- 升级gentoo失败,genkernel all通不过,revdep-rebuild反复编辑gcc
- 操作TreeView(咏南工作室)
- 防止程序重复执行的单元
- JavaScript的一些实用技巧收藏
- 使用ASP.NET上传图片汇总(二)
- 获取当前系统版本号
- ...
- 进制转换
- 读书笔记_C#技术内幕_第十五章(执行转换)
- 读书笔记_C#技术内幕_第十七章(文件的输入/输出和串行化)
- 读书笔记_C#技术内幕_第二十三章(多线程)
- 读书笔记_C#技术内幕_第二十五章(字符串操作)(String类)
- 在东莞比较忙
- 读书笔记_C#技术内幕_第二十五章(字符串操作)(StringBuilder,字符串格式化)