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
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容