当前位置:首页 > c++ > c++获取exe或dll的模块编译时间

c++获取exe或dll的模块编译时间

xuwenyan7个月前 (02-14)c++1240

获取编译时间可以做什么?

由于业务需要,有时候我们需要获取自己的编译时间,比如我们可以根据自己的编译时间来做一些云控需求。

应用场景举例

比如程序发布的前一周是不需要检测版本更新的,一周后开始检测更新,当检测到新版本时提示用于升级。

获取模块编译时间demo代码

#include <iostream>

#include <windows.h>
#include <time.h>

extern "C" IMAGE_DOS_HEADER __ImageBase;
time_t GetCompileTime(HMODULE module = nullptr) {
  PIMAGE_DOS_HEADER dos_header = module ? (PIMAGE_DOS_HEADER)module : &__ImageBase;
  PIMAGE_NT_HEADERS nt_header = (PIMAGE_NT_HEADERS)((PBYTE)dos_header + dos_header->e_lfanew);
  return nt_header->FileHeader.TimeDateStamp;
}

int main() {
  time_t compile_time = GetCompileTime();

  tm tm_ = { 0 };
  ::localtime_s(&tm_, &compile_time);
  printf("编译时间为:%d年%d月%d日%d时%d分%d秒", 
    tm_.tm_year + 1900, tm_.tm_mon + 1, tm_.tm_mday, tm_.tm_hour, tm_.tm_min, tm_.tm_sec);

  getchar();
  return 0;
}

demo结果展示



    文章作者:xuwenyan
    版权声明:本文为本站原创文章,转载请注明出处,非常感谢,如版权漏申明或您觉得任何有异议的地方欢迎与本站取得联系。

    发表评论

    访客

    ◎欢迎参与讨论,请在这里发表您的看法和观点。