当前位置:首页 > c++ > 正文内容

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

xuwenyan12个月前 (02-14)c++325

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

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

应用场景举例

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

获取模块编译时间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
    版权声明:本文为本站原创文章,转载请注明出处,非常感谢,如版权漏申明或您觉得任何有异议的地方欢迎与本站取得联系。

    扫描二维码推送至手机访问。

    版权声明:本文由艺文笔记发布,如需转载请注明出处。

    本文链接:https://www.xuwenyan.com/archives/2440

    分享给朋友:

    “c++获取exe或dll的模块编译时间” 的相关文章

    C++获取windows桌面图标的位置信息

    C++获取windows桌面图标的位置信息

    要获取windows桌面图标的位置,大致是下面几个步骤,具体请参阅后面的代码:1:获取桌面图标层的窗口句柄,也就是SysListView32层,当然xp系统和非xp系统父窗口是不同的,具体请看GetIconRect中的代码。2:根据窗口句柄获取到进程id,然后往进程中分配一块内存,用于存储图标信息,...

    VC的ATL工程向导同时生成一个PS工程是做什么的?可以不要吗?

    VC的ATL工程向导同时生成一个PS工程是做什么的?可以不要吗?

    例如,我用VC2015的工程向导新建一个ATL的工程名字叫myAtl,那么VC会同时给我生成一个叫做myAtlPS的工程。这个myAtlPS工程是做什么的?什么情况下可以不需要它?什么情况下它又是必须存在的? PS工程是什么?可以不要吗? 这个PS工程叫做代理与存根(proxy&nbs...

    uafxcwd.lib(afxmem.obj) : error LNK2005:

    uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)"解决办法

    如果在编译MFC程序的时候出现下列及类似的错误: 1˃uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMTD.lib(new...

    C++ 获取进程所在目录(进程全路径)

    C++ 获取进程所在目录(进程全路径)

    打开windows任务管理器,会看到很多的进程在运行,随机挑选一个,如何通过c++代码获取某一个进程的所在全路径呢?这也是在windows软件开发中经常遇到的需求。通过进程名获取进程全路径由于可能很多进程叫同一个名字,所以获得的结果也有可能是多个#include <windows.h...

    c++函数模板参数类型限定

    c++函数模板参数类型限定

    函数模板函数模板可以实现对不同数据类型做统一操作,比如比较两个数据的大小:template<typename T> bool compare(T& a,T& b) {   return a...

    c++为什么不能在构造函数里调用虚函数?

    c++为什么不能在构造函数里调用虚函数?

    c++为什么不能在构造函数里调用虚函数? c++的构造顺序先构造父类,然后构造子类,析构顺序相反。 如果在构造函数调用虚函数,例如:ClassB继承于ClassA,如果在ClassA的构造函数里调用虚函数,此时因为ClassB并没有构造,所以ClassB的成员都没有初始化,如果编译执行...