admin 发表于 2022-7-25 15:15:43

NSIS 获取物理内存


!addplugindir .

    Name Memory
    OutFile Memory.exe

    XPStyle on
    InstallColors /windows
    ShowInstDetails show
    RequestExecutionLevel admin

    Page instfiles

    Section Install

      # 获取系统已识别的总内存大小
      # Windows XP、2003 通过 Windows API 只能获取到这个大小
      System::Call "*(i64,i,l,l,l,l,l,l,l)i.R0"
      System::Call "kernel32::GlobalMemoryStatusEx(iR0)"
      System::Call "*$R0(i,i,l.R1)"
      System::Free $R0

      # 通过 Windows API 将数值格式化为“字节、KB、GB 单位”
    !ifndef NSIS_UNICODE
      System::Call "shlwapi::StrFormatByteSize64A(lR1,t.R2,i${NSIS_MAX_STRLEN})"
    !else
      System::Call "shlwapi::StrFormatByteSizeW(lR1,t.R2,i${NSIS_MAX_STRLEN})"
    !endif
      DetailPrint "已识别内存大小:$R2 ($R1)"

      # 获取系统已安装的总内存大小
      # 以下代码仅在 Windows Vista 或更高的系统有效
      System::Call "kernel32::GetPhysicallyInstalledSystemMemory(*l.R1)"
      System::Int64Op $R1 << 10
      Pop $R1

      # 通过 Windows API 将数值格式化为“字节、KB、GB 单位”
    !ifndef NSIS_UNICODE
      System::Call "shlwapi::StrFormatByteSize64A(lR1,t.R2,i${NSIS_MAX_STRLEN})"
    !else
      System::Call "shlwapi::StrFormatByteSizeW(lR1,t.R2,i${NSIS_MAX_STRLEN})"
    !endif
      DetailPrint "总安装内存大小:$R2 ($R1)"

    SectionEnd


页: [1]
查看完整版本: NSIS 获取物理内存