|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
C/C++判断dll是多少位的
0 K: n" d) y" m. e4 h1 D
U6 _6 z; S3 `, R8 f. N#include <stdio.h>, h) A6 j2 [1 C7 R2 V9 ^6 g! d
#include <windows.h>- ^( B1 s/ ]" _& s4 j" a
/ j; a K- h& M
7 X; \- m' }: f# ^$ S- X# Cint __stdcall CrnGetImageFileMachine(LPCSTR lpFileName)
! f c6 Q+ r' I8 h \$ ?) l8 ]) J+ N; q0 H) |
{
' b1 ?7 Y# W: A9 e Q$ S9 m
3 B8 g! J( o: @% |, Z" y. c IMAGE_DOS_HEADER idh;
3 X7 z! ?- |1 t* Q J' i$ l+ i( h+ ]$ {1 J o9 W, j
FILE *f = fopen(lpFileName, "rb");( G$ G' v. v1 Z
0 C0 r# ~1 c; ?+ c, H7 o
fread(&idh, sizeof(idh), 1, f);% L+ t. ^: _1 w: Q, l+ j
- p5 n0 S: e) f3 R- b
# P3 e) e0 ~4 |! B8 {5 d4 [ IMAGE_FILE_HEADER ifh;$ X: _: X* q) q3 Q; r# ~2 ~
; i7 D# g' S" Z, l/ M% u fseek(f, idh.e_lfanew + 4, SEEK_SET);
* B* s* q9 V, ]1 {8 l& c& R
+ o8 Y# {. ~& L( P: w; E fread(&ifh, sizeof(ifh), 1, f);
- A9 |' s2 C' m+ v0 c
" V; ]4 Q) S( _$ [6 {% ]+ ~+ ?
" Q* v1 v3 q3 J: \+ _* V0 v fclose(f);: B1 o6 S; k# q* r- @
' S' {) X& Q' y% f6 @! \! i( c, V
& K/ H& Q* w2 ^( C" _) Q& r0 n' C return ifh.Machine;2 U8 `1 f1 x3 ~/ ?; g8 B
: b9 n( f+ z; X8 s% y}+ T) T) Z# Y5 Q7 ~ G
5 R( S5 Z0 _# v r$ }( {' ?+ z% d F
3 D6 K' [9 s$ C r7 t
2 H" n( _$ }) E
// C/C++判断dll是多少位的5 C. v# d) h: Y4 S3 L. _, p( Y
( B5 Y4 S- y) T! f) S int n = CrnGetImageFileMachine("E:\\temp\\setup.exe");
5 c5 n4 m- n. N6 n+ |5 K0 u
) ^& [8 f- u O+ \) { if (n == 0x014C) ShowMessage("x86"); g9 g) p2 h3 T8 Y- P8 u
else if (n == 0x0200) ShowMessage("IA64");
) V! b( i- n+ n X6 S& @# U else if (n == 0x8664) ShowMessage("x64");
3 _& R' f* H1 t. u9 {, V else ShowMessage("抱歉检测不出来");/ v5 j1 w. E; u% e( M
% n3 P2 p6 d* j( e) ^( G9 v& e1 s8 w; W
|
|