开启辅助访问

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

精易模块能否更新一下 系统_取系统版本 命令

查看数: 7367 | 评论数: 9 | 收藏 2
关灯 | 提示:支持键盘翻页 & lt;-左 右 ->
    组图打开中,请稍候......
发布时间: 2022-5-20 21:54

正文摘要:

最近更新了win11系统 发现用这个命令识别系统时显示的是windows 10 不知道能否更新一下正常识别win11

回复

LXFaYX   山东省青岛市 发表于 2025-3-21 09:46:28
本帖最后由 LXFaYX 于 2025-3-21 09:50 编辑


  
子程序名返回值类型公开备 注
系统_取系统版本文本型 支持获取win98、win2000 、winXP、win2003 、win2008 、win7 、win8 、win2012、win8.1 、win10、win11 系统版本。
参数名类 型参考可空数组备 注
参_主要版本号变量储存返回值
参_次要版本号变量储存返回值
参_内部版本号变量储存返回值
参_是否带名称逻辑型是否带版本名称描述,如 专业版,企业版等
参_是否取位数逻辑型操作系统位数,如32位或64位
参_取SP版本号逻辑型
参_取内部版本逻辑型Build内部版本
参_取修正版本逻辑型
变量名类 型静态数组备 注
m_osviOSVERSIONINFOEX 
m_siSYSTEM_INFO 
m_dwType  
m_system文本型 
m_version文本型 
m_dwMajorVersion整数型 
m_dwMinorVersion整数型 
m_dwBuildNumber短整数型 
m_retrun文本型 
m_isWOW64逻辑型 
m_szCSDVersion文本型 
m_CurrentBuild文本型 
m_strMark文本型 
m_osvi.dwOSVersionInfoSize = 156
如果真 (GetVersionEx (m_osvi))
GetSystemInfo (m_si)
IsWow64Process (-1, m_isWOW64)
RtlGetNtVersionNumbers (m_osvi.dwMajorVersion, m_osvi.dwMinorVersion, m_dwBuildNumber)
参_主要版本号 = m_osvi.dwMajorVersion
参_次要版本号 = m_osvi.dwMinorVersion
参_内部版本号 = m_dwBuildNumber
判断 (m_osvi.dwMajorVersion = 10)
判断 (m_osvi.dwMinorVersion = 0)
' m_system = 选择 (m_osvi.wProductType = #VER_NT_WORKSTATION, “Windows 10”, “Windows Server 2016”)
如果 (m_osvi.wProductType = #VER_NT_WORKSTATION )
m_system = “Windows 10”
m_system = 取文本注册项 ( #本地机器, “SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName”, )




判断 (m_osvi.dwMajorVersion = 6)
判断 (m_osvi.dwMinorVersion = 0)
m_system = 选择 (m_osvi.wProductType = #VER_NT_WORKSTATION, “Windows Vista”, “Windows Server 2008”)
判断 (m_osvi.dwMinorVersion = 1)
m_system = 选择 (m_osvi.wProductType = #VER_NT_WORKSTATION, “Windows 7”, “Windows Server 2008 R2”)
判断 (m_osvi.dwMinorVersion = 2)
m_system = 选择 (m_osvi.wProductType = #VER_NT_WORKSTATION, “Windows 8”, “Windows Server 2012”)
判断 (m_osvi.dwMinorVersion = 3)
m_system = 选择 (m_osvi.wProductType = #VER_NT_WORKSTATION, “Windows 8.1”, “Windows Server 2012 R2”)



判断 (m_osvi.dwMajorVersion = 5 m_osvi.dwMinorVersion = 0)
m_system = “Windows 2000”
如果 (m_osvi.wProductType = 1)
m_version = “Professional”
如果真 (位与 (m_osvi.wSuiteMask, 128) = 0)
m_version = “Datacenter Server”
如果 (位与 (m_osvi.wSuiteMask, 2) = 0)
m_version = “Advanced Server”
m_version = “Server”


判断 (m_osvi.dwMajorVersion = 5 m_osvi.dwMinorVersion = 1)
m_system = “Windows XP”
如果 (位与 (m_osvi.wSuiteMask, 512) = 1)
m_version = “Home Edition”  ' “家庭版”
m_version = “Professional”  ' “专业版”

判断 (m_osvi.dwMajorVersion = 5 m_osvi.dwMinorVersion = 2)
判断 (GetSystemMetrics (89) ≠ 0)
m_system = “Windows Server 2003 R2, ”
判断 (位与 (m_osvi.wSuiteMask, 8192) = 8192)
m_system = “Windows Storage Server 2003”
判断 (位与 (m_osvi.wSuiteMask, 32768) = 32768)
m_system = “Windows Home Server”
判断 (m_osvi.wProductType = 1 m_si.wProcessorArchitecture = 9)
m_system = “Windows XP Professional x64 Edition”  ' Xp专业版64位系统
m_system = “Windows Server 2003, ”

判断 (m_osvi.dwMajorVersion = 4 m_osvi.dwMinorVersion = 10)
m_system = “Windows 98”


如果真 (m_osvi.dwMajorVersion ≥ 6)
RtlGetProductInfo (m_osvi.dwMajorVersion, m_osvi.dwMinorVersion, 0, 0, m_dwType)
判断 (m_dwType = 1)  ' 旗舰版
m_version = “Ultimate Edition”
判断 (m_dwType = 2)  ' 家庭普通版
m_version = “Home Basic Edition”
判断 (m_dwType = 3)  ' 家庭高级版
m_version = “Home Premium Edition”
判断 (m_dwType = 4)  ' 企业版
m_version = “Enterprise Edition”
判断 (m_dwType = 6)  ' 商业版
m_version = “Business Edition”
判断 (m_dwType = 7)  ' 服务器标准版
m_version = “Standard”
判断 (m_dwType = 8)  ' 服务器企业版
m_version = “Datacenter Edition”
判断 (m_dwType = 9)  ' 小型服务器
m_version = “Small Business Server”
判断 (m_dwType = 10)  ' 服务器企业版(完整的安装)
m_version = “Enterprise Edition”
判断 (m_dwType = 11)  ' 入门版
m_version = “Starter Edition”
判断 (m_dwType = 12)  ' 服务器数据中心版(核心安装)
m_version = “Datacenter Edition (core installation)”
判断 (m_dwType = 13)  ' 服务器标准版(核心安装)
m_version = “Standard Edition (core installation)”
判断 (m_dwType = 14)  ' 服务器企业版(核心安装)
m_version = “Enterprise Edition (core installation)”
判断 (m_dwType = 15)  ' 一个企业级的平台
m_version = “Enterprise Edition for Itanium-based Systems”
判断 (m_dwType = 16)  ' 商用公司版
m_version = “Business N”
判断 (m_dwType = 17)  ' Web服务器(完整安装)
m_version = “Web Server (full installation)”
判断 (m_dwType = 18)  ' 服务器群集版
m_version = “HPC Edition”
判断 (m_dwType = 19)  ' 2008 R2 储存服务器版
m_version = “Windows Storage Server 2008 R2 Essentials”
判断 (m_dwType = 20)  ' 服务器快速储存版
m_version = “Storage Server Express”
判断 (m_dwType = 21)  ' 服务器标准储存版
m_version = “Storage Server Standard”
判断 (m_dwType = 22)  ' 服务器储存组
m_version = “Storage Server Workgroup”
判断 (m_dwType = 23)  ' 服务器储存企业版
m_version = “Storage Server Enterprise”
判断 (m_dwType = 25)
m_version = “Small Business Server Premium Edition”
判断 (m_dwType = 48)  ' 专业版
m_version = “Professional”
判断 (m_dwType = 121)  ' 教育版
m_version = “Education”


m_system = 到文本 (m_osvi.dwMajorVersion)“.”到文本 (m_osvi.dwMinorVersion)“ ” + m_version
m_retrun = m_system
判断 (参_主要版本号 = 10 参_次要版本号 = 0 参_内部版本号 ≥ 22000)
m_retrun = 选择 (参_是否带名称, “Windows 11”, m_retrun)
m_retrun = 选择 (参_是否带名称, “Windows 10”, m_retrun)
m_retrun = 选择 (参_是否带名称, m_retrun + “ ”选择 (寻找文本 (m_retrun, m_version, , ) = -1, m_version, “”), m_retrun)
m_retrun = 选择 (参_是否取位数, 选择 (m_isWOW64, m_retrun + “ X64”, m_retrun + “ X86”), m_retrun)
如果真 (参_取SP版本号)
m_szCSDVersion = 到文本 (m_osvi.szCSDVersion)
如果真 (取文本长度 (m_szCSDVersion) = 0)
m_szCSDVersion = 取文本注册项 ( #本地机器, “SOFTWARE\Microsoft\Windows NT\CurrentVersion\CSDVersion”, )
m_strMark = 选择 (取文本长度 (m_szCSDVersion) > 2, m_szCSDVersion, “”)
如果真 (参_取内部版本)
如果 (参_内部版本号 = 0)
m_CurrentBuild = 取文本注册项 ( #本地机器, “SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentBuild”, )
m_CurrentBuild = 到文本 (参_内部版本号)
如果 (m_strMark ≠ “”)
m_strMark = m_strMark + “,” + m_CurrentBuild
m_strMark = “” + m_CurrentBuild

如果真 (参_取修正版本)
如果真 (到文本 (取数值注册项 ( #本地机器, “SOFTWARE\Microsoft\Windows NT\CurrentVersion\UBR”, )) ≠ “”)
m_strMark = m_strMark + “.”到文本 (取数值注册项 ( #本地机器, “SOFTWARE\Microsoft\Windows NT\CurrentVersion\UBR”, ))

如果真 (m_strMark ≠ “”)
m_strMark = “ (” + m_strMark + “)”
返回 (m_retrun + m_strMark)
返回 (“”)


感谢分享,但是还有点Bug,比如Win10带名称不显示,我修改了一下,不知道对否,还增加了一个取修正版本号的判断,比如Win10 19045.6666。
拂晓遐云   山西省太原市 发表于 2025-1-27 20:15:47
  
子程序名返回值类型公开备 注
系统_取系统版本文本型 支持获取win98、win2000 、winXP、win2003 、win2008 、win7 、win8 、win2012、win8.1 、win10、win11 系统版本。
参数名类 型参考可空数组备 注
参_主要版本号变量储存返回值
参_次要版本号变量储存返回值
参_内部版本号变量储存返回值
参_是否带名称逻辑型是否带版本名称描述,如 专业版,企业版等
参_是否取位数逻辑型操作系统位数,如32位或64位
参_取SP版本号逻辑型
参_取内部版本逻辑型build内部版本
变量名类 型静态数组备 注
m_osviOSVERSIONINFOEX 
m_siSYSTEM_INFO 
m_dwType  
m_system文本型 
m_version文本型 
m_dwMajorVersion整数型 
m_dwMinorVersion整数型 
m_dwBuildNumber短整数型 
m_retrun文本型 
m_isWOW64逻辑型 
m_szCSDVersion文本型 
m_CurrentBuild文本型 
m_strMark文本型 
m_osvi.dwOSVersionInfoSize = 156
如果真 (GetVersionEx (m_osvi))
GetSystemInfo (m_si)
IsWow64Process (-1, m_isWOW64)
RtlGetNtVersionNumbers (m_osvi.dwMajorVersion, m_osvi.dwMinorVersion, m_dwBuildNumber)
参_主要版本号 = m_osvi.dwMajorVersion
参_次要版本号 = m_osvi.dwMinorVersion
参_内部版本号 = m_dwBuildNumber
判断 (m_osvi.dwMajorVersion = 10)
判断 (m_osvi.dwMinorVersion = 0)
' m_system = 选择 (m_osvi.wProductType = #VER_NT_WORKSTATION, “Windows 10”, “Windows Server 2016”)
如果 (m_osvi.wProductType = #VER_NT_WORKSTATION )
m_system = “Windows 10”
m_system = 取文本注册项 ( #本地机器, “SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName”, )




判断 (m_osvi.dwMajorVersion = 6)
判断 (m_osvi.dwMinorVersion = 0)
m_system = 选择 (m_osvi.wProductType = #VER_NT_WORKSTATION, “Windows Vista”, “Windows Server 2008”)
判断 (m_osvi.dwMinorVersion = 1)
m_system = 选择 (m_osvi.wProductType = #VER_NT_WORKSTATION, “Windows 7”, “Windows Server 2008 R2”)
判断 (m_osvi.dwMinorVersion = 2)
m_system = 选择 (m_osvi.wProductType = #VER_NT_WORKSTATION, “Windows 8”, “Windows Server 2012”)
判断 (m_osvi.dwMinorVersion = 3)
m_system = 选择 (m_osvi.wProductType = #VER_NT_WORKSTATION, “Windows 8.1”, “Windows Server 2012 R2”)



判断 (m_osvi.dwMajorVersion = 5 m_osvi.dwMinorVersion = 0)
m_system = “Windows 2000”
如果 (m_osvi.wProductType = 1)
m_version = “Professional”
如果真 (位与 (m_osvi.wSuiteMask, 128) = 0)
m_version = “Datacenter Server”
如果 (位与 (m_osvi.wSuiteMask, 2) = 0)
m_version = “Advanced Server”
m_version = “Server”


判断 (m_osvi.dwMajorVersion = 5 m_osvi.dwMinorVersion = 1)
m_system = “Windows XP”
如果 (位与 (m_osvi.wSuiteMask, 512) = 1)
m_version = “Home Edition”  ' “家庭版”
m_version = “Professional”  ' “专业版”

判断 (m_osvi.dwMajorVersion = 5 m_osvi.dwMinorVersion = 2)
判断 (GetSystemMetrics (89) ≠ 0)
m_system = “Windows Server 2003 R2, ”
判断 (位与 (m_osvi.wSuiteMask, 8192) = 8192)
m_system = “Windows Storage Server 2003”
判断 (位与 (m_osvi.wSuiteMask, 32768) = 32768)
m_system = “Windows Home Server”
判断 (m_osvi.wProductType = 1 m_si.wProcessorArchitecture = 9)
m_system = “Windows XP Professional x64 Edition”  ' Xp专业版64位系统
m_system = “Windows Server 2003, ”

判断 (m_osvi.dwMajorVersion = 4 m_osvi.dwMinorVersion = 10)
m_system = “Windows 98”


如果真 (m_osvi.dwMajorVersion ≥ 6)
RtlGetProductInfo (m_osvi.dwMajorVersion, m_osvi.dwMinorVersion, 0, 0, m_dwType)
判断 (m_dwType = 1)  ' 旗舰版
m_version = “Ultimate Edition”
判断 (m_dwType = 2)  ' 家庭普通版
m_version = “Home Basic Edition”
判断 (m_dwType = 3)  ' 家庭高级版
m_version = “Home Premium Edition”
判断 (m_dwType = 4)  ' 企业版
m_version = “Enterprise Edition”
判断 (m_dwType = 6)  ' 商业版
m_version = “Business Edition”
判断 (m_dwType = 7)  ' 服务器标准版
m_version = “Standard”
判断 (m_dwType = 8)  ' 服务器企业版
m_version = “Datacenter Edition”
判断 (m_dwType = 9)  ' 小型服务器
m_version = “Small Business Server”
判断 (m_dwType = 10)  ' 服务器企业版(完整的安装)
m_version = “Enterprise Edition”
判断 (m_dwType = 11)  ' 入门版
m_version = “Starter Edition”
判断 (m_dwType = 12)  ' 服务器数据中心版(核心安装)
m_version = “Datacenter Edition (core installation)”
判断 (m_dwType = 13)  ' 服务器标准版(核心安装)
m_version = “Standard Edition (core installation)”
判断 (m_dwType = 14)  ' 服务器企业版(核心安装)
m_version = “Enterprise Edition (core installation)”
判断 (m_dwType = 15)  ' 一个企业级的平台
m_version = “Enterprise Edition for Itanium-based Systems”
判断 (m_dwType = 16)  ' 商用公司版
m_version = “Business N”
判断 (m_dwType = 17)  ' Web服务器(完整安装)
m_version = “Web Server (full installation)”
判断 (m_dwType = 18)  ' 服务器群集版
m_version = “HPC Edition”
判断 (m_dwType = 19)  ' 2008 R2 储存服务器版
m_version = “Windows Storage Server 2008 R2 Essentials”
判断 (m_dwType = 20)  ' 服务器快速储存版
m_version = “Storage Server Express”
判断 (m_dwType = 21)  ' 服务器标准储存版
m_version = “Storage Server Standard”
判断 (m_dwType = 22)  ' 服务器储存组
m_version = “Storage Server Workgroup”
判断 (m_dwType = 23)  ' 服务器储存企业版
m_version = “Storage Server Enterprise”
判断 (m_dwType = 25)
m_version = “Small Business Server Premium Edition”
判断 (m_dwType = 48)  ' 专业版
m_version = “Professional”
判断 (m_dwType = 121)  ' 教育版
m_version = “Education”


m_system = 到文本 (m_osvi.dwMajorVersion)“.”到文本 (m_osvi.dwMinorVersion)“ ” + m_version
m_retrun = m_system
判断 (参_主要版本号 = 10 参_次要版本号 = 0 参_内部版本号 ≥ 22000)
m_retrun = 选择 (参_是否带名称, “Windows 11”, m_retrun)
m_retrun = 选择 (参_是否带名称, m_retrun + “ ”选择 (寻找文本 (m_retrun, m_version, , ) = -1, m_version, “”), m_retrun)
m_retrun = 选择 (参_是否取位数, 选择 (m_isWOW64, m_retrun + “ x64”, m_retrun + “ x86”), m_retrun)
如果真 (参_取SP版本号)
m_szCSDVersion = 到文本 (m_osvi.szCSDVersion)
如果真 (取文本长度 (m_szCSDVersion) = 0)
m_szCSDVersion = 取文本注册项 ( #本地机器, “SOFTWARE\Microsoft\Windows NT\CurrentVersion\CSDVersion”, )
m_strMark = 选择 (取文本长度 (m_szCSDVersion) > 2, m_szCSDVersion, “”)
如果真 (参_取内部版本)
如果 (参_内部版本号 = 0)
m_CurrentBuild = 取文本注册项 ( #本地机器, “SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentBuild”, )
m_CurrentBuild = 到文本 (参_内部版本号)
如果 (m_strMark ≠ “”)
m_strMark = m_strMark + “,Build:” + m_CurrentBuild
m_strMark = “Build:” + m_CurrentBuild

如果真 (m_strMark ≠ “”)
m_strMark = “ (” + m_strMark + “)”
返回 (m_retrun + m_strMark)
返回 (“”)

1724323655   贵州省黔东南苗族侗族自治州 发表于 2024-4-29 20:02:09
102066666666
用户341522   辽宁省大连市 发表于 2023-11-18 22:04:22
666666666666
IT技术学?   浙江省宁波市 发表于 2022-6-10 14:36:06
666666666666666666
taotao197710   山东省淄博市 发表于 2022-6-10 10:49:30
有啥用啊。
zhou200303   福建省莆田市 发表于 2022-6-10 08:34:08
11都出来了,其实是可以测试做一个命令了
xiouluote   广东省肇庆市 发表于 2022-5-21 00:59:40
加到 精易模块里面 确实方便很多
大司命   广东省广州市 发表于 2022-5-20 21:56:35
进程_取系统版本
https://125.confly.eu.org/forum.php?mod=viewthread&tid=14687036
(出处: 精易论坛)
发布主题 收藏帖子 返回列表

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

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