巧妙解决程序运行在兼容模式下时window版本欺诈问题
来源:互联网 发布:ie浏览器无法登录淘宝 编辑:程序博客网 时间:2024/06/03 13:30
有时候,我们想获取系统的版本号,根据版本号为软件做特定的设置。
通常情况下我们会调用系统API函数GetVersionEx来获取系统版本号,但是,如果软件是以兼容模式运行的话,将会发生window版本欺诈的问题,这个GetVersionEx不能正确获取系统版本,只能获取兼容模式下的系统版本,那么该如何解决呢?
通常情况下我们会调用系统API函数GetVersionEx来获取系统版本号,但是,如果软件是以兼容模式运行的话,将会发生window版本欺诈的问题,这个GetVersionEx不能正确获取系统版本,只能获取兼容模式下的系统版本,那么该如何解决呢?
在系统目录C:\Windows\System32下有个程序ntoskrnl.exe,该程序的版本与系统版本一致,我们可以获取该程序的版本号,以此在我们的软件中获取系统的正确版本号,下面是Delphi的实现代码
type PVerInfo = ^TVS_FIXEDFILEINFO; TVS_FIXEDFILEINFO = record dwSignature: longint; dwStrucVersion: longint; dwFileVersionMS: longint; dwFileVersionLS: longint; dwFileFlagsMask: longint; dwFileFlags: longint; dwFileOS: longint; dwFileType: longint; dwFileSubtype: longint; dwFileDateMS: longint; dwFileDateLS: longint; end; var ExeNames: array[0..255] of char; zKeyPath: array[0..255] of Char; VerInfo: PVerInfo; Buf: pointer; Sz: word; L, Len: Cardinal;begin ExeNames :='C:\Windows\System32\ntoskrnl.exe'; Sz := GetFileVersionInfoSize(ExeNames, L); if Sz=0 then begin WindowVerson := -1; Exit; end; try GetMem(Buf, Sz); try GetFileVersionInfo(ExeNames, 0, Sz, Buf); if VerQueryValue(Buf, '\', Pointer(VerInfo), Len) then begin WindowVerson:=HIWORD(VerInfo.dwFileVersionMS); end; finally FreeMem(Buf); end; except WindowVerson := -1; endend;
0 0
- 巧妙解决程序运行在兼容模式下时window版本欺诈问题
- ADF11g-037:解决IE8兼容模式下运行时弹窗问题
- 解决IE8兼容模式下运行时弹窗问题
- gcc编译静态库到自己的程序 解决在不同linux下因libc版本问题而不能运行
- 解决360 兼容模式下问题。
- 解决360 兼容模式下问题
- 通过代码将程序在Win7/Win8下设置成以兼容模式运行
- 解决360浏览器优先选择极速模式,在兼容模式下出现乱码问题
- 如何解决一些控件无法运行在高版本的Chrome下运行的问题
- 解决在windows下用gtk编写的程序运行时弹出console窗口的问题
- 解决在windows下用gtk编写的程序运行时弹出console窗口的问题
- 解决uploadify上传插件在火狐及360急速模式下不兼容的问题
- 解决Bootstrap网页在360安全浏览器兼容模式下无法正常显示问题
- 怎样判定应用程序自身运行在“兼容模式”下?
- 让网站在IE8的兼容模式下运行
- 怎样判定应用程序自身运行在“兼容模式”下?
- 在win7下如何以兼容模式运行matlab
- 让你的程序在xp系统模式下运行(适用于更高级Windows系统版本)
- hbase 远程链接
- HDFS daily maintenance,, useful command
- 没有为扩展名“.html”注册的生成提供程序, url 转发时不能跳转到静态页
- 别人都说你是疯子的时候,或许正是 你离目标越来越近的时候。。
- 解决SQL Server查询中使用Union或Union All后Order by排序无效的bug(好神奇啊!!)
- 巧妙解决程序运行在兼容模式下时window版本欺诈问题
- SSL 错误:Key usage violation in certificate has been detected.
- 取得真实客户端IP地址
- CF 367C Sereja and the Arrangement of Numbers(欧拉路径)
- 新书目录(初步设想)
- java中中文字符串按首字母排序
- centos6.5(x86_64)下ITK4.5.1安装
- 重装编译服务器名称规范
- 利用JasperReport+iReport进行Web报表开发