相关疑难解决方法(0)

检测Windows 10版本

我的目标是在我的代码中检测Windows 10,它必须跨平台以及不同版本的Windows(至少7及以上版本)工作.Windows提供IsWindows10OrGreater()了解决此问题的方法,但是还有另一个问题,此功能在以前的Windows版本中不存在.

你会发现无数的博客和SO问题,以及明显的疯狂,像这样和getversion等功能返回一些不同的版本,而不是正确的版本.

例如在我的机器上 - 该方法IsWindows10OrGreater()无法编译(我将安装Win10 SDK),并IsWindowsVersionOrGreater()报告6为主要版本.

那么有一种理智的多版本方式我可以解决这个问题吗?

c++ windows winapi

20
推荐指数
1
解决办法
9744
查看次数

IsWindows10OrGreater()在Windows 10上失败

我编写了一段代码来使用GetVersionEx函数检索Windows主要版本和次要版本,但此函数始终返回主要版本6和次要版本2.

MSDN说要使用Version Helper API来查找当前的操作系统.我在Windows 8.1中构建了该项目,并引用了Windows 8.1工具包路径以包含VersionHelpers头文件.VersionHelpers头文件中没有可用的IsWindows10OrGreater()函数.

所以我从GitHub下载了VersionHelper头文件并添加到我的项目中.编译错误消失但IsWindows10OrGreater功能失败.

我做错了吗?

c++ windows winapi visual-c++

3
推荐指数
1
解决办法
3367
查看次数

Windows 10无法在InstallShield上检测到

要求在安装时检测Windows 10或更高版本。为此,我创建了以下功能。

它在Windows 10和Windows 8.1中给我603(AS VersionNT值)。那是错的。

还有其他方法可以做到这一点吗?

function BOOL isWindows10OrGreater()
 STRING svWindowsValue;
 NUMBER nWindowsValue;
 NUMBER nBuffer;
begin
     try
       nBuffer = 256;
       MsiGetProperty(ISMSI_HANDLE,"VersionNT",svWindowsValue,nBuffer);
       StrToNum(nWindowsValue,svWindowsValue);
       return (nWindowsValue >= 603);
     catch
       return FALSE;
    endcatch;
 end;
Run Code Online (Sandbox Code Playgroud)

windows-installer installshield installscript

1
推荐指数
1
解决办法
1746
查看次数