windows - 检查 Windows Server 2003
问题描述
我创建了这些函数来在 windows server 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 上也会返回 true,因为它也有 5.2 version。
要区分这些,请测试ver.ProductType = VER_NT_SERVER
.
请参阅如何以编程方式区分 XP 64 位和 Server 2003 64 位
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;
推荐阅读
- php - Laravel 中“闭包”类的源代码
- java - 对话框片段中未显示标题
- python - 通过 virtualenv 在 Mac 上安装旧版本的 Python
- javascript - 当我们在手机上以角度 2 打开网站时,window.print() 不会生成 PDF 并且无法下载
- react-native - 在反应原生导航 v2 中使用 mergeOptions 函数之前,有没有办法读取选项?
- android - 使用计时器任务控制视图寻呼机幻灯片
- arrays - 在循环中访问 fortran 数组的复杂性
- javascript - C3 和 React - DOMException
- api - 如何设置授权标头/重置现有标头?
- c# - 找不到方法:'System.Linq.IQueryable`1 NHibernate.Linq.LinqExtensionMethods.Query(NHibernate.IStatelessSession)'