; 注册表读取系统版本号
RegRead, ReleaseId, HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion, ReleaseId
MsgBox % ReleaseId  ; Chrome库的自带Edge,需要系统版本if (ReleaseId>2004)才行【22H2=2009】

; 简单API判断  <6 Vista和XP,=10 Win10/Win11【Win8未验证】
MsgBox % "简单API判断:" (DllCall("Kernel32.dll\GetVersion", "UInt") & 0xFF)

If ((DllCall("Kernel32.dll\GetVersion", "UInt") & 0xFF) < 6) {
  MsgBox, 16, %A_ThisFunc%, 此功能需要 Windows Vista 或更高版本!
  Return
}

; GPT回答:Windows 11的正式版本号应该大于或等于10.0.22000。
MsgBox % A_OSVersion

if (SubStr(A_OSVersion, -4)>21500)  ; Win版本判断 
  acc实时防护ID := "4.2.4.2.4.5"  ; Win11
 else
  acc实时防护ID := "4.2.4.5.5"  ; Win10

; 函数精确判断
MsgBox % RtlGetVersion()
; MsgBox % Format("{:X}", RtlGetVersion())

RtlGetVersion() {	; 检索已安装的Windows系统的版本
  ; https://github.com/jNizM/ahk_pi-hole/blob/master/src/pi-hole.ahk
   ; https://msdn.microsoft.com/en-us/library/mt723418(v=vs.85).aspx
  ; 0x0A00 - 2560 - Windows 10 / Windows 11
  ; 0x0603 - 1539 - Windows 8.1
  ; 0x0602 - 1538 - Windows 8 / Windows Server 2012
  ; 0x0601 - 1537 - Windows 7 / Windows Server 2008 R2
  ; 0x0600 - 1536 - Windows Vista / Windows Server 2008
  ; 0x0502 - 1282 - Windows XP 64-Bit Edition / Windows Server 2003 / Windows Server 2003 R2
  ; 0x0501 - 1281 - Windows XP
  ; 0x0500 - 1280 - Windows 2000
  ; 0x0400 - 1024 - Windows NT 4.0
  static RTL_OSV_EX, init := NumPut(VarSetCapacity(RTL_OSV_EX, A_IsUnicode ? 284 : 156, 0), RTL_OSV_EX, "uint")
  if (DllCall("ntdll\RtlGetVersion", "ptr", &RTL_OSV_EX) != 0)
    throw Exception("RtlGetVersion failed", -1)
  return ((NumGet(RTL_OSV_EX, 4, "uint") << 8) | NumGet(RTL_OSV_EX, 8, "uint"))
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。