如果计算机上安装的Windows版本是Windows Vista及更高版本(Windows 7),我如何签入C++?
我多年前编写了一个PC审计工具,并一直保持最新状态.其中一个基本功能是报告正在审核的PC上运行的Windows版本,我一直使用GetVersionEx调用.
这适用于Windows 8,但在Windows 10下不受支持,Windows 10确实像Windows 8一样返回8.2.Microsoft似乎没有引入任何直接替代品,而是建议您检查所需的特定功能而不是查看操作系统,但出于审计的目的,我实际上需要操作系统名称.
'scanner'是一个C++程序,必须在非特权帐户下运行,所以我不认为我读过另一个建议 - 拿起系统DLL的版本如kernel32.dll将起作用,因为这些文件夹通常无法访问给用户.
欢迎任何其他建议/想法!
在 .NET Framework 中,要获取操作系统版本,您可以使用和值Environment.OSVersion来告诉您 Windows 版本(即 6.1 = Windows 7、10.0 = Windows 10)。尽管 Windows 11 已经发布(开发版和测试版渠道)一个多月了,但文档尚未更新以提及如何检测 Windows 11。MajorMinor
对于 Windows API,GetVersion已永久弃用,甚至版本帮助程序 API 也只能升至IsWindows10OrGreater. 是否有简单的检查来确定主要的 Windows 版本,特别是 Windows 11?有人有类似的问题,但对于 Delphi(How to detector Windows 11 using Delphi 10.3.3),接受的答案都是 hacks。为什么微软这么难提供一个简单的API来返回当前的系统版本呢? GetVersion永远不应该被弃用。
使用C#,如何获得About窗口中显示的Windows内部版本号或OS内部版本号?这与版本号不同:对于Windows 10 Creator Update,内部版本号为,1703操作系统内部版本为15063.296。
我找不到任何相关内容Environment.OSVersion,这个链接的问题(以编程方式获取Windows OS版本)仅与获取版本号有关(10在这种情况下)
要求在安装时检测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)