如果计算机上安装的Windows版本是Windows Vista及更高版本(Windows 7),我如何签入C++?
我的目标是在我的代码中检测Windows 10,它必须跨平台以及不同版本的Windows(至少7及以上版本)工作.Windows提供IsWindows10OrGreater()了解决此问题的方法,但是还有另一个问题,此功能在以前的Windows版本中不存在.
你会发现无数的博客和SO问题,以及明显的疯狂,像这样和getversion等功能返回一些不同的版本,而不是正确的版本.
例如在我的机器上 - 该方法IsWindows10OrGreater()无法编译(我将安装Win10 SDK),并IsWindowsVersionOrGreater()报告6为主要版本.
那么有一种理智的多版本方式我可以解决这个问题吗?
我总是习惯用他们的主要/次要内部版本号检查Windows版本.奇怪的是,Windows 7和Server 2008 R2都返回相同的主要/次要版本号组合.
通过ver在命令提示符下键入来确认
有谁知道TOSVersion.Name是否仍适用于Windows 10?
我有一个vcl应用程序,它有一个表单show事件,它获取操作系统的详细信息,并使用SysUtils的TOSVersion记录在TMemo框中显示它们.
with mmoOSInfo.Lines do
begin
Clear;
Add(TOSVersion.ToString);
Add('');
Add('Architecture: ' + OSArchitectureToStr(TOSVersion.Architecture));
Add('Platform: ' + OSPlatformToStr(TOSVersion.Platform) +
IntToStr(PlatformFromPointer));
Add('Build: ' + IntToStr(TOSVersion.Build));
Add('Major: ' + IntToStr(TOSVersion.Major));
Add('Minor: ' + IntToStr(TOSVersion.Minor));
Add('Name: ' + TOSVersion.Name);
Add('Service Pack - Major: ' + IntToStr(TOSVersion.ServicePackMajor));
Add('Service Pack - Minor: ' + IntToStr(TOSVersion.ServicePackMinor));
end;
Run Code Online (Sandbox Code Playgroud)
代码在XP上没有任何问题执行(是的我们仍在使用它(羞愧地停下来)),Vista,Windows 7,Windows 8.1,台式电脑,笔记本电脑和Surface Pro,但在Windows 10上安装时却没有.
当我使用paserver调试时,TOSVersion.Name返回为:='Windows 8'.我做错了什么,或者我期望TOSVersion能够检测到Windows 10?没有例外被触发.在我可以访问的2台Windows 10机器中,一条迁移路径来自Windows 8.1,另一条迁移路径来自Windows 7.
非常感谢
我有一个WinForms应用程序,需要根据运行它的操作系统以特定方式(特别是某个安装程序的shell)运行.
我正在使用System.OperatingSystem类,并结合使用PlatFormID,Major,Minor和Build数字,这些数字可以帮助您完成大部分工作.
不幸的是,OperatinSystem对象的特性,不允许您在某些平台之间进行精确区分.例如Vista和Windows Server 2008,或Vista 32位和Vista 64位.同样,XP 64位Professional似乎与Server 2003具有相同的版本信息.
那么是否有可能从WinForms应用程序(使用c#)确定您正在运行的Windows操作系统?
我希望我的VB 6应用程序能够检测并显示正在运行的Windows版本.
我从另一个Stack Overflow问题尝试了这个代码,但它对我不起作用.它在旧版Windows(如Windows XP和Vista)上显示正确的版本号,但无法检测Windows 10.出于某种原因,它表示Windows 10是Windows 8.
我认为Windows 10将有一个主要版本的"10"和一个次要版本的"0",这个Windows版本号图表证实它确实如此.那么,为什么GetVersionEx函数永远不会实际返回10.0版本?
如何准确区分Windows 8,Windows 8.1和Windows 10?
我使用 TOSVersion.ToString 函数(使用 SysUtils)来检测 Windows 版本。然而,这是我在 Windows11 中得到的:
Windows 10 (Version 10.0, Build 21996, 64-bit Edition)
有没有可靠的方法来检测Windows 11?我正在使用德尔福10.3.3。
更新:Windows 11 正式发布,我再次尝试。这是我得到的:
Windows 10 (Version 10.0, Build 22000, 64-bit Edition)
有什么方法可以知道我们正在研究哪种Windows版本?
我需要在Windows XP中将图像设置为TBitButton,而在Windows7中没有图像.它应该自动完成.
可能重复:
如何检测真正的Windows版本
我有一个应用程序使用第三方库(DLL - 没有源代码)来保护(加密)一些客户数据,这个DLL必须使用不同的参数初始化,具体取决于当前的Windows版本.如果我的应用程序在Windows 7下以XP兼容模式执行,则dll加密方法将失败.所以我需要一种方法来检测我的应用程序何时在兼容模式下运行以防止出现此问题.所以How I can detect if my application is running under compatibility mode?
我想在XML文件中区分Windows XP和Windows 7.以为我会在XML中使用环境变量.
但是,我找不到在Windows中定义的任何系统环境变量来提供此信息.
我看到%OSTYPE%变量,但它仅在Windows 7中可用.它没有在XP中定义.
无论如何我能做到吗?
请注意,我想要一个纯粹依赖于系统环境变量的解决方案.我不想基于执行某些命令来创建新变量,因为我想在XML文件中使用此变量.
我最近看到此有关检测的Windows的“真实”的版本问题#1。
我有一个使用仅在Windows Vista及更高版本上可用的代码的应用程序。为了保持与Windows XP的兼容性,我创建了自己的版本,该版本与Vista代码完全相同,但与Vista代码的速度相差无几。当前,当从GetVersionEx()中检测到XP时,将加载XP代码。但是,显然,当应用程序在XP兼容性下运行时,此代码会不必要地加载。现在我知道我可以检查Vista方法,但是我的代码使用了很多仅Vista的代码,我宁愿不必检查该方法是否存在,因为我已经编写了XP检查,并且更改起来会更容易一个功能。
现在我的问题是:如何运行此WMI查询并以int AND std :: string形式返回结果(Windows版本):“从Win32_OperatingSystem中选择版本”
我正在使用VC ++ 2008。
windows ×7
delphi ×5
winapi ×3
c++ ×2
version ×2
windows-10 ×2
windows-7 ×2
c# ×1
delphi-7 ×1
delphi-xe8 ×1
vb6 ×1
versioning ×1
visual-c++ ×1
windows-11 ×1
windows-xp ×1
winforms ×1
wmi ×1