正在检查 Windows Server 2003
Checking for Windows Server 2003
我创建了这些函数用于在 windows 服务器 2003 上安装一些文件,我想知道这是否是正确的方法。
function IsServer: Boolean;
var
ver: TWindowsVersion;
begin
GetWindowsVersionEx(ver);
Result := UsingWinNT and (ver.Major = 5) and (ver.Minor >= 2) and Not IsWin64;
end;
function IsServer64: Boolean;
var
ver: TWindowsVersion;
begin
GetWindowsVersionEx(ver);
Result := UsingWinNT and (ver.Major = 5) and (ver.Minor >= 2) and IsWin64;
end;
您没有向我们展示 UsingWinNT
的作用 - 尽管您绝对不需要检查 "NT" - Inno Setup 制作的安装程序甚至不会在非 NT 系统上启动。
IsServer64
即使在 Windows XP Professional x64 Edition, as it also has 5.2 version.
上也会 return 为真
为了区分这些,测试ver.ProductType = VER_NT_SERVER
。
参见 How to programmatically tell the difference between XP 64 bit and Server 2003 64 Bit
function IsWindowsServer2003_32Bit: Boolean;
var
Ver: TWindowsVersion;
begin
GetWindowsVersionEx(Ver);
Result :=
(Ver.ProductType = VER_NT_SERVER) and
(Ver.Major = 5) and (Ver.Minor = 2) and (not IsWin64);
end;
function IsWindowsServer2003_64Bit: Boolean;
var
Ver: TWindowsVersion;
begin
GetWindowsVersionEx(Ver);
Result :=
(Ver.ProductType = VER_NT_SERVER) and
(Ver.Major = 5) and (Ver.Minor = 2) and IsWin64;
end;
另见 Determine Windows version in Inno Setup。
我创建了这些函数用于在 windows 服务器 2003 上安装一些文件,我想知道这是否是正确的方法。
function IsServer: Boolean;
var
ver: TWindowsVersion;
begin
GetWindowsVersionEx(ver);
Result := UsingWinNT and (ver.Major = 5) and (ver.Minor >= 2) and Not IsWin64;
end;
function IsServer64: Boolean;
var
ver: TWindowsVersion;
begin
GetWindowsVersionEx(ver);
Result := UsingWinNT and (ver.Major = 5) and (ver.Minor >= 2) and IsWin64;
end;
您没有向我们展示 UsingWinNT
的作用 - 尽管您绝对不需要检查 "NT" - Inno Setup 制作的安装程序甚至不会在非 NT 系统上启动。
IsServer64
即使在 Windows XP Professional x64 Edition, as it also has 5.2 version.
为了区分这些,测试ver.ProductType = VER_NT_SERVER
。
参见 How to programmatically tell the difference between XP 64 bit and Server 2003 64 Bit
function IsWindowsServer2003_32Bit: Boolean;
var
Ver: TWindowsVersion;
begin
GetWindowsVersionEx(Ver);
Result :=
(Ver.ProductType = VER_NT_SERVER) and
(Ver.Major = 5) and (Ver.Minor = 2) and (not IsWin64);
end;
function IsWindowsServer2003_64Bit: Boolean;
var
Ver: TWindowsVersion;
begin
GetWindowsVersionEx(Ver);
Result :=
(Ver.ProductType = VER_NT_SERVER) and
(Ver.Major = 5) and (Ver.Minor = 2) and IsWin64;
end;
另见 Determine Windows version in Inno Setup。