日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++判断exe是32位还是64位

發布時間:2025/3/21 c/c++ 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++判断exe是32位还是64位 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
bool isPE64(TCHAR *filename) {DWORD access_mode = (GENERIC_READ | GENERIC_WRITE);//共享模式DWORD share_mode = FILE_SHARE_READ | FILE_SHARE_WRITE;HANDLE hFile =CreateFile(filename,access_mode,share_mode,NULL,OPEN_ALWAYS,FILE_FLAG_SEQUENTIAL_SCAN,NULL);if (hFile == INVALID_HANDLE_VALUE) {return false;}DWORD high_size;DWORD file_size = GetFileSize(hFile, &high_size);DWORD mmf_size = 512 * 1024;DWORD size_high = 0;//創建文件映射,如果要創建內存頁面文件的映射,第一個參數設置為INVALID_HANDLE_VALUEHANDLE hFm = CreateFileMapping(hFile,NULL,PAGE_READWRITE,size_high,mmf_size,NULL);if (hFm == NULL){CloseHandle(hFile);return false;}size_t view_size = 1024 * 256;DWORD view_access = FILE_MAP_ALL_ACCESS;//獲得映射視圖char* base_address = (char*)MapViewOfFile(hFm, view_access, 0, 0, view_size);if (base_address != NULL){bool flag;IMAGE_DOS_HEADER *pDos = (IMAGE_DOS_HEADER*)base_address;IMAGE_NT_HEADERS *pNt = (IMAGE_NT_HEADERS*)(pDos->e_lfanew + (char*)pDos);if (pNt->FileHeader.Machine == IMAGE_FILE_MACHINE_IA64 || pNt->FileHeader.Machine == IMAGE_FILE_MACHINE_AMD64)flag = true;elseflag = false;//卸載映射UnmapViewOfFile(base_address);//關閉內存映射文件CloseHandle(hFm);//關閉文件CloseHandle(hFile);return flag;}else{return false;} }

IMAGE_FILE_HEADER 中的Machine定義了PE文件的運行環境,因此判斷該變量就可以獲取其可運行的環境

總結

以上是生活随笔為你收集整理的C++判断exe是32位还是64位的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。