开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 5899|回复: 5
收起左侧

[已解决] 系统_取系统版本()问题反馈

[复制链接]

结帖率:95% (19/20)
发表于 2020-3-12 12:14:42 | 显示全部楼层 |阅读模式   四川省成都市
在6.5版本上,系统_取系统版本,设置是否带名称,能正确取到系统版本,例如专业版,教育版等信息。在后续版本,以及最新8.0.5版本,设置后,无法获取到系统版本名称。
结帖率:90% (71/79)

签到天数: 22 天

发表于 2021-6-3 16:26:55 | 显示全部楼层   湖南省岳阳市
对的 我的win10企业长期版 也取不出来  @项目部004
回复 支持 反对

使用道具 举报

结帖率:78% (7/9)
发表于 2020-11-16 14:47:12 | 显示全部楼层   湖北省孝感市

有没有完整源码
回复 支持 反对

使用道具 举报

结帖率:25% (1/4)

签到天数: 11 天

发表于 2020-7-26 08:48:02 | 显示全部楼层   江西省萍乡市
这个很多时候都有问题,都是直接返回:获取失败,请检查版本
平均4到5台电脑里就有1台识别不出来是什么系统。
回复 支持 反对

使用道具 举报

结帖率:100% (9/9)
发表于 2020-3-21 11:17:58 | 显示全部楼层   广东省惠州市
@项目部004
  1. .版本 2

  2. .子程序 系统_取系统版本, 文本型, 公开, 支持获取win98、win2000 、winXP、win2003 、win2008 、win7 、win8 、win2012、win8.1 、win10 系统版本。
  3. .参数 参_主版本, , 参考 可空, 变量储存返回值
  4. .参数 参_次版本, , 参考 可空, 变量储存返回值
  5. .参数 参_是否带名称, 逻辑型, 可空, 是否带版本名称描述,如 专业版,企业版等
  6. .参数 参_是否取位数, 逻辑型, 可空, 操作系统位数,如32位或64位
  7. .参数 参_取SP版本号, 逻辑型, 可空
  8. .参数 参_取内部版本, 逻辑型, 可空, build内部版本
  9. .局部变量 m_osvi, OSVERSIONINFOEX
  10. .局部变量 m_si, SYSTEM_INFO
  11. .局部变量 m_dwType
  12. .局部变量 m_system, 文本型
  13. .局部变量 m_version, 文本型
  14. .局部变量 m_dwMajorVersion, 整数型
  15. .局部变量 m_dwMinorVersion, 整数型
  16. .局部变量 m_dwBuildNumber, 短整数型
  17. .局部变量 m_retrun, 文本型
  18. .局部变量 m_isWOW64, 逻辑型
  19. .局部变量 m_szCSDVersion, 文本型
  20. .局部变量 m_CurrentBuild, 文本型
  21. .局部变量 m_strMark, 文本型

  22. m_osvi.dwOSVersionInfoSize = 156
  23. .如果真 (GetVersionEx (m_osvi))
  24.     GetSystemInfo (m_si)
  25.     IsWow64Process (-1, m_isWOW64)
  26.     RtlGetNtVersionNumbers (m_osvi.dwMajorVersion, m_osvi.dwMinorVersion, m_dwBuildNumber)
  27.     参_主版本 = m_osvi.dwMajorVersion
  28.     参_次版本 = m_osvi.dwMinorVersion
  29.     m_osvi.dwBuildNumber = m_dwBuildNumber
  30.     .判断开始 (m_osvi.dwMajorVersion = 10)
  31.         .判断开始 (m_osvi.dwMinorVersion = 0)
  32.             ' m_system = 选择 (m_osvi.wProductType = #VER_NT_WORKSTATION, “Windows 10”, “Windows Server 2016”)
  33.             .如果 (m_osvi.wProductType = #VER_NT_WORKSTATION)
  34.                 m_system = “Windows 10”
  35.             .否则
  36.                 m_system = 取文本zc项 (#本地机器, “SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName”, )
  37.             .如果结束

  38.         .默认

  39.         .判断结束

  40.     .判断 (m_osvi.dwMajorVersion = 6)
  41.         .判断开始 (m_osvi.dwMinorVersion = 0)
  42.             m_system = 选择 (m_osvi.wProductType = #VER_NT_WORKSTATION, “Windows Vista”, “Windows Server 2008”)
  43.         .判断 (m_osvi.dwMinorVersion = 1)
  44.             m_system = 选择 (m_osvi.wProductType = #VER_NT_WORKSTATION, “Windows 7”, “Windows Server 2008 R2”)
  45.         .判断 (m_osvi.dwMinorVersion = 2)
  46.             m_system = 选择 (m_osvi.wProductType = #VER_NT_WORKSTATION, “Windows 8”, “Windows Server 2012”)
  47.         .判断 (m_osvi.dwMinorVersion = 3)
  48.             m_system = 选择 (m_osvi.wProductType = #VER_NT_WORKSTATION, “Windows 8.1”, “Windows Server 2012 R2”)
  49.         .默认

  50.         .判断结束

  51.     .判断 (m_osvi.dwMajorVersion = 5 且 m_osvi.dwMinorVersion = 0)
  52.         m_system = “Windows 2000”
  53.         .如果 (m_osvi.wProductType = 1)
  54.             m_version = “Professional”
  55.         .否则
  56.             .如果真 (位与 (m_osvi.wSuiteMask, 128) = 0)
  57.                 m_version = “Datacenter Server”
  58.             .如果真结束
  59.             .如果 (位与 (m_osvi.wSuiteMask, 2) = 0)
  60.                 m_version = “Advanced Server”
  61.             .否则
  62.                 m_version = “Server”
  63.             .如果结束

  64.         .如果结束

  65.     .判断 (m_osvi.dwMajorVersion = 5 且 m_osvi.dwMinorVersion = 1)
  66.         m_system = “Windows XP”
  67.         .如果 (位与 (m_osvi.wSuiteMask, 512) = 1)
  68.             m_version = “Home Edition”  ' “家庭版”
  69.         .否则
  70.             m_version = “Professional”  ' “专业版”
  71.         .如果结束

  72.     .判断 (m_osvi.dwMajorVersion = 5 且 m_osvi.dwMinorVersion = 2)
  73.         .判断开始 (GetSystemMetrics (89) ≠ 0)
  74.             m_system = “Windows Server 2003 R2, ”
  75.         .判断 (位与 (m_osvi.wSuiteMask, 8192) = 8192)
  76.             m_system = “Windows Storage Server 2003”
  77.         .判断 (位与 (m_osvi.wSuiteMask, 32768) = 32768)
  78.             m_system = “Windows Home Server”
  79.         .判断 (m_osvi.wProductType = 1 且 m_si.wProcessorArchitecture = 9)
  80.             m_system = “Windows XP Professional x64 Edition”  ' Xp专业版64位系统
  81.         .默认
  82.             m_system = “Windows Server 2003, ”
  83.         .判断结束

  84.     .判断 (m_osvi.dwMajorVersion = 4 且 m_osvi.dwMinorVersion = 10)
  85.         m_system = “Windows 98”
  86.     .默认

  87.     .判断结束
  88.     .如果真 (m_osvi.dwMajorVersion ≥ 6)
  89.         RtlGetProductInfo (m_osvi.dwMajorVersion, m_osvi.dwMinorVersion, 0, 0, m_dwType)
  90.         .判断开始 (m_dwType = 1)  ' 旗舰版
  91.             m_version = “Ultimate Edition”
  92.         .判断 (m_dwType = 2)  ' 家庭普通版
  93.             m_version = “Home Basic Edition”
  94.         .判断 (m_dwType = 3)  ' 家庭高级版
  95.             m_version = “Home Premium Edition”
  96.         .判断 (m_dwType = 4)  ' 企业版
  97.             m_version = “Enterprise Edition”
  98.         .判断 (m_dwType = 6)  ' 商业版
  99.             m_version = “Business Edition”
  100.         .判断 (m_dwType = 7)  ' 服务器标准版
  101.             m_version = “Standard”
  102.         .判断 (m_dwType = 8)  ' 服务器企业版
  103.             m_version = “Datacenter Edition”
  104.         .判断 (m_dwType = 9)  ' 小型服务器
  105.             m_version = “Small Business Server”
  106.         .判断 (m_dwType = 10)  ' 服务器企业版(完整的安装)
  107.             m_version = “Enterprise Edition”
  108.         .判断 (m_dwType = 11)  ' 入门版
  109.             m_version = “Starter Edition”
  110.         .判断 (m_dwType = 12)  ' 服务器xx中心版(核心安装)
  111.             m_version = “Datacenter Edition (core installation)”
  112.         .判断 (m_dwType = 13)  ' 服务器标准版(核心安装)
  113.             m_version = “Standard Edition (core installation)”
  114.         .判断 (m_dwType = 14)  ' 服务器企业版(核心安装)
  115.             m_version = “Enterprise Edition (core installation)”
  116.         .判断 (m_dwType = 15)  ' 一个企业级的平台
  117.             m_version = “Enterprise Edition for Itanium-based Systems”
  118.         .判断 (m_dwType = 16)  ' 商用公司版
  119.             m_version = “Business N”
  120.         .判断 (m_dwType = 17)  ' Web服务器(完整安装)
  121.             m_version = “Web Server (full installation)”
  122.         .判断 (m_dwType = 18)  ' 服务器群集版
  123.             m_version = “HPC Edition”
  124.         .判断 (m_dwType = 19)  ' 2008 R2 储存服务器版
  125.             m_version = “Windows Storage Server 2008 R2 Essentials”
  126.         .判断 (m_dwType = 20)  ' 服务器快速储存版
  127.             m_version = “Storage Server Express”
  128.         .判断 (m_dwType = 21)  ' 服务器标准储存版
  129.             m_version = “Storage Server Standard”
  130.         .判断 (m_dwType = 22)  ' 服务器储存组
  131.             m_version = “Storage Server Workgroup”
  132.         .判断 (m_dwType = 23)  ' 服务器储存企业版
  133.             m_version = “Storage Server Enterprise”
  134.         .判断 (m_dwType = 25)
  135.             m_version = “Small Business Server Premium Edition”
  136.         .判断 (m_dwType = 48)  ' 专业版
  137.             m_version = “Professional”
  138.         .默认
  139.             m_system = “获取失败,请检查版本:” + 到文本 (m_osvi.dwMajorVersion) + “.” + 到文本 (m_osvi.dwMinorVersion)
  140.         .判断结束

  141.     .如果真结束


  142.     m_retrun = m_system
  143.     m_retrun = 选择 (参_是否带名称, m_retrun + “ ” + 选择 (寻找文本 (m_retrun, m_version, , 假) = -1, m_version, “”), m_retrun)
  144.     m_retrun = 选择 (参_是否取位数, 选择 (m_isWOW64, m_retrun + “ x64”, m_retrun + “ x86”), m_retrun)
  145.     .如果真 (参_取SP版本号)
  146.         m_szCSDVersion = 到文本 (m_osvi.szCSDVersion)
  147.         .如果真 (取文本长度 (m_szCSDVersion) = 0)
  148.             m_szCSDVersion = 取文本zc项 (#本地机器, “SOFTWARE\Microsoft\Windows NT\CurrentVersion\CSDVersion”, )
  149.         .如果真结束
  150.         m_strMark = 选择 (取文本长度 (m_szCSDVersion) > 2, m_szCSDVersion, “”)
  151.     .如果真结束
  152.     .如果真 (参_取内部版本)
  153.         .如果 (m_osvi.dwBuildNumber = 0)
  154.             m_CurrentBuild = 取文本zc项 (#本地机器, “SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentBuild”, )
  155.         .否则
  156.             m_CurrentBuild = 到文本 (m_osvi.dwBuildNumber)
  157.         .如果结束
  158.         .如果 (m_strMark ≠ “”)
  159.             m_strMark = m_strMark + “,Build:” + m_CurrentBuild
  160.         .否则
  161.             m_strMark = “Build:” + m_CurrentBuild
  162.         .如果结束

  163.     .如果真结束
  164.     .如果真 (m_strMark ≠ “”)
  165.         m_strMark = “ (” + m_strMark + “)”
  166.     .如果真结束
  167.     返回 (m_retrun + m_strMark)
  168. .如果真结束
  169. 返回 (“”)
复制代码

点评

修正win10后服务器版本,无法获取2016与2019,及无法获取版本的问题。   广东省惠州市  发表于 2020-3-21 11:19

评分

参与人数 1好评 +1 精币 +5 收起 理由
项目部004 + 1 + 5 此处应该有鼓励~

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表