杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 795|回复: 0

判断系统版本信息并写入到文件

[复制链接]
发表于 2022-7-25 15:21:14 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x

systeminfo.ini 的格式
  1. [systeminfo]
  2. WINDOWS=
  3. X86_X64=
  4. VERNUM=
  5. SP=
  6. Language=
复制代码



  1. !include "WinVer.nsh"
  2. !include "x64.nsh"
  3. OutFile "systeminfo.EXE"
  4. Name "systeminfo"
  5. SetFont /LANG=2052 "tahoma" 8
  6. LoadLanguageFile "${NSISDIR}\Contrib\Language files\SimpChinese.nlf"

  7. Var WINS_SP ;操作系统SP数字号
  8. Var WINDOWS_Version ;WINDOWS版本
  9. Var Service_Pack ;SP版本
  10. Var Kernel_version ;内核版本
  11. Var X86_X64 ;系统位数
  12. Var WINDOWS_Language ;WINDOWS语言
  13. SilentInstall silent
  14. Section

  15. ;判断系统版本
  16. ReadRegStr $WINDOWS_Version HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CurrentVersion" ;读取系统版本注册表键值
  17. StrCmp $WINDOWS_Version "" +1 +2
  18. ReadRegStr $WINDOWS_Version HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion" "VersionNumber" ;读取系统版本注册表键值

  19. ${If} ${RunningX64}
  20. SetRegView 64
  21. ReadRegStr $WINS_SP HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CSDVersion" ;读取系统SP注册表键值
  22. strcpy $Service_Pack "$WINS_SP" "" -1 ;截取路径的后1个字符
  23. ${Else}
  24. SetRegView 32
  25. ReadRegStr $WINS_SP HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CSDVersion" ;读取系统SP注册表键值
  26. strcpy $Service_Pack "$WINS_SP" "" -1 ;截取路径的后1个字符
  27. ${EndIf}

  28. StrCmp $WINDOWS_Version "4.9" +1 +2
  29. StrCpy $WINDOWS_Version "98"
  30. StrCmp $WINDOWS_Version "5.0" +1 +2
  31. StrCpy $WINDOWS_Version "2000"
  32. StrCmp $WINDOWS_Version "5.1" +1 +2
  33. StrCpy $WINDOWS_Version "XP"
  34. StrCmp $WINDOWS_Version "5.2" +1 +2
  35. StrCpy $WINDOWS_Version "2003"
  36. StrCmp $WINDOWS_Version "6.0" +1 +2
  37. StrCpy $WINDOWS_Version "Vista"
  38. StrCmp $WINDOWS_Version "6.1" +1 +2
  39. StrCpy $WINDOWS_Version "7"
  40. StrCmp $WINDOWS_Version "6.2" +1 +2
  41. StrCpy $WINDOWS_Version "8"
  42. StrCmp $WINDOWS_Version "6.3" +1 +2
  43. StrCpy $WINDOWS_Version "10"
  44. ;#######################################################################################################
  45. ;判断是X86还是X64

  46. ${If} ${AtLeastWinXP}
  47. System::Alloc 36
  48. pop $Kernel_version
  49. ${EndIf}

  50. ${If} $Kernel_version <> 0
  51. System::Call 'kernel32::GetNativeSystemInfo(i $Kernel_version)'
  52. System::Call "*$Kernel_version(&i2.r1)"
  53. System::Free $Kernel_version

  54. StrCmp $1 0 +1 +2
  55. StrCpy $X86_X64 "x86"
  56. StrCmp $1 6 +1 +2
  57. StrCpy $X86_X64 "ia64"
  58. StrCmp $1 9 +1 +2
  59. StrCpy $X86_X64 "x64"
  60. IntCmp $1 10 +1 +2 +1
  61. StrCpy $X86_X64 "unknown"
  62. ${EndIf}

  63. ;从注册表中读取操作系统语言
  64. ReadRegStr $WINDOWS_Language HKLM "SYSTEM\CurrentControlSet\Control\Nls\Language" "Default"
  65. ${If} $WINDOWS_Language = 0804
  66. WriteINIStr "$EXEDIR\systeminfo.ini" "systeminfo" "Language" "简体中文"
  67. ${Else}
  68. MessageBox MB_OK "只支持简体中文系统打补丁。"
  69. Quit
  70. ;MessageBox MB_OK "您的操作系统语言为简体中文。"
  71. ;${ElseIf} $WINDOWS_Language == 0404
  72. ;MessageBox MB_OK "您的操作系统语言为繁体中文。"
  73. ;${ElseIf} $WINDOWS_Language == 0409
  74. ;MessageBox MB_OK "您的操作系统语言为英文。"
  75. ${EndIf}
  76. WriteINIStr "$EXEDIR\systeminfo.ini" "systeminfo" "WINDOWS" "WIN$WINDOWS_Version"
  77. WriteINIStr "$EXEDIR\systeminfo.ini" "systeminfo" "VERNUM" "$WINDOWS_Version"
  78. WriteINIStr "$EXEDIR\systeminfo.ini" "systeminfo" "SP" "$Service_Pack"
  79. WriteINIStr "$EXEDIR\systeminfo.ini" "systeminfo" "X86_X64" "$X86_X64"
  80. SectionEnd
复制代码


回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-1 00:08 , Processed in 0.113995 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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