c++获取exe或dll的模块编译时间
获取编译时间可以做什么?
由于业务需要,有时候我们需要获取自己的编译时间,比如我们可以根据自己的编译时间来做一些云控需求。
应用场景举例
比如程序发布的前一周是不需要检测版本更新的,一周后开始检测更新,当检测到新版本时提示用于升级。
获取模块编译时间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结果展示
