And*_*and 6 delphi winapi windows-7
在我的Windows 7系统上,GetVersionEx Windows API函数返回"6.0",表示Windows Vista,它应返回"6.1".
如果重要,我使用以下Delphi代码:
function winver: string;
var
ver: TOSVersionInfo;
begin
ver.dwOSVersionInfoSize := SizeOf(ver);
if GetVersionEx(ver) then
with ver do
result := IntToStr(dwMajorVersion) + '.' + IntToStr(dwMinorVersion) + '.' + IntToStr(dwBuildNumber) + ' (' + szCSDVersion + ')';
end;
Run Code Online (Sandbox Code Playgroud)
并返回字符串"6.0.6002(Service Pack 2)".
这不是很奇怪吗?
我现在发现GetVersionEx在我的应用程序通过Delphi 2009调试器运行时返回Vista,而Windows 7则在应用程序单独执行时返回.我还发现RAD Studio(Delphi IDE)实际上是在Windows Vista SP2的兼容模式下运行的.因此,一切都是有道理的,因为正如kibab所指出的,子进程将"继承"其父进程的兼容性设置.
您的可执行文件是否在定义了任何兼容性设置的情况下运行(我认为这可能是传统Delphi应用程序的情况)?GetVersionEx各州的文件:
如果兼容模式有效,则GetVersionEx函数会在操作系统识别自身时报告操作系统,该操作系统可能不是已安装的操作系统.例如,如果兼容模式生效,GetVersionEx将报告为应用程序兼容性而选择的操作系统.
也许GetProductInfo可以做你想要的?