在没有API的情况下检测Delphi 2007上的Windows版本

del*_*les -8 windows delphi winapi delphi-2007

简单问题:如何使用Delphi 2007以可靠的方式检测Windows版本?有没有办法在没有API的情况下这样做,即只检查系统目录中的某些文件夹或文件?

提前致谢 !

And*_*ers 8

如果不调用Windows API函数,则无法检查文件或注册表值!

在不调用任何API的情况下检查版本的唯一方法是从PEB读取,但大多数字段都没有文档,理论上可以从版本更改为版本.它也受兼容性垫片的影响.我不建议你这样做,但如果你坚持,那么这段代码可能是一个很好的起点,只需阅读OSMajorVersionOSMinorVersion成员(Teb来自GetTebPeb := Teb.Peb来自Teb).

Microsoft建议您检查是否存在所需功能,而不是检查版本.检查版本的推荐方法是使用VerifyVersionInfoGetVersionEx如果您需要版本号用于显示目的,仍可继续使用已弃用的方法.这两个函数都需要清单才能在Windows 8.1和10上获得正确的版本.