精易论坛

标题: 精易模块能否更新一下 系统_取系统版本 命令 [打印本页]

作者: 白月初    时间: 2022-5-20 21:54
标题: 精易模块能否更新一下 系统_取系统版本 命令
最近更新了win11系统 发现用这个命令识别系统时显示的是windows 10
不知道能否更新一下正常识别win11


作者: 大司命    时间: 2022-5-20 21:56
进程_取系统版本
https://125.confly.eu.org/forum.php?mod=viewthread&tid=14687036
(出处: 精易论坛)

作者: xiouluote    时间: 2022-5-21 00:59
加到 精易模块里面 确实方便很多
作者: zhou200303    时间: 2022-6-10 08:34
11都出来了,其实是可以测试做一个命令了
作者: taotao197710    时间: 2022-6-10 10:49
有啥用啊。
作者: IT技术学?    时间: 2022-6-10 14:36
666666666666666666
作者: 用户341522    时间: 2023-11-18 22:04
666666666666
作者: 1724323655    时间: 2024-4-29 20:02
102066666666
作者: 拂晓遐云    时间: 2025-1-27 20:15
  
子程序名返回值类型公开备 注
系统_取系统版本文本型 支持获取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)
返回 (“”)


作者: LXFaYX    时间: 2025-3-21 09:46
本帖最后由 LXFaYX 于 2025-3-21 09:50 编辑
拂晓遐云 发表于 2025-1-27 20:15


  
子程序名返回值类型公开备 注
系统_取系统版本文本型 支持获取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。





欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4