|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
C/C++判断dll是多少位的
* o+ ?" k, R$ ]; F2 A5 C3 l7 y
1 ~; J/ S6 Y$ y+ J/ P5 u' z% {#include <stdio.h>
7 t* P! C- Y% F#include <windows.h>
3 H5 V6 O& N4 R" k- e5 @ E+ d2 ?* M p, i- T$ c9 e
; j+ M1 _ ?- L4 N' w. ]0 e6 r. P
int __stdcall CrnGetImageFileMachine(LPCSTR lpFileName)/ E2 j) g! e9 a, R
8 Q) a. D M1 X2 M1 Q9 R
{
" N5 t. }) p) B5 U1 u8 d! Q' e2 `! v; k( N; i- K9 A) R
IMAGE_DOS_HEADER idh;
% I7 x3 H0 i4 H* ^. _/ |3 O& ]9 g7 F( W2 k/ O4 K. I
FILE *f = fopen(lpFileName, "rb");. r& V9 q4 w& H/ W6 p2 s
! E/ ^$ r% c9 b# f# r fread(&idh, sizeof(idh), 1, f);% q& `0 m( V" l `& J3 A! Q- d! ?
1 u5 g6 b% ^" g! x% E
" _& r; ?7 Z8 s
IMAGE_FILE_HEADER ifh;
$ s$ O$ h2 Q4 z3 |5 O! Q5 {1 x8 H2 c4 j% w
fseek(f, idh.e_lfanew + 4, SEEK_SET);
S& F3 @0 Q) N
8 L z7 h' E% | fread(&ifh, sizeof(ifh), 1, f);
g0 c- F+ m! i1 j b) i: x& @4 C
0 p' p3 U4 ~7 K4 g: j0 ?4 |2 i2 @ ]# ~+ `7 I l
fclose(f);
v- f, c. D0 l0 i% T4 B6 ^
; w: g A# Y" |' Z/ I4 r) W9 y0 K- Y" N- t8 x* ]: K
return ifh.Machine;& j4 f6 b; `& D) `" m- _- \
7 y) q" U: X- h- V- b/ z}
0 o- d$ S6 E5 C4 n! m" S1 A( h R
/ d" d" b. ~3 t; _+ b% q
3 _% P2 @% \' P! [8 }0 q# E6 _; E# `. h
$ E }/ P$ F f2 A8 H" g1 L9 D// C/C++判断dll是多少位的2 M/ z% F' V+ ^# h1 i: F8 T
$ y5 R0 ]' [$ z7 B q* q0 f# y4 u
int n = CrnGetImageFileMachine("E:\\temp\\setup.exe");
/ U8 G4 T4 g) \" t. i* `* M0 d. d7 q+ D! ]
if (n == 0x014C) ShowMessage("x86");" T0 A* p8 r4 x: J% x7 n
else if (n == 0x0200) ShowMessage("IA64");5 I7 }" }7 p# U5 C: T
else if (n == 0x8664) ShowMessage("x64");
: H0 H: K" V, G, M1 k else ShowMessage("抱歉检测不出来");
4 Y* _+ h2 G8 c
( ^; {/ g- W5 o1 I w m; V9 N" m$ }- T! I! a& @8 a% k
|
|