|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
C/C++判断dll是多少位的
5 p- w( |: b/ ~6 w6 Q( e
; P# x$ U2 Q n#include <stdio.h>6 \" S' G" ?( K' P, T7 X
#include <windows.h>
: y, E3 z$ C7 p# [: c, q8 b. y) V7 E n5 n9 \7 @
2 w, M" }+ O; K& Q0 N: ]0 Y, g1 x* q0 ]
int __stdcall CrnGetImageFileMachine(LPCSTR lpFileName)# n* m% Z3 @$ d+ m4 ]9 L2 O
, i. |, }" E& a( N{$ ? U4 d' `& |0 S3 S& I- ] ~
# e( f, f) Y/ l5 L6 }; P IMAGE_DOS_HEADER idh;$ W1 ~8 V" }. v6 O6 M9 u, g
8 T c4 N* q- c9 ~0 T# Z
FILE *f = fopen(lpFileName, "rb");
* f1 |! j9 a* N% z1 O
3 V; Y- S' ` x1 K4 [ A: C fread(&idh, sizeof(idh), 1, f);$ k* t1 `+ k0 c! v# M3 P
) I% x, ~2 x5 V) L" G/ v' y6 A( C n; W k% _4 ]
IMAGE_FILE_HEADER ifh;
6 J9 z2 o% U0 N2 y0 r
% u4 q: R% o9 `+ O4 O/ i, I0 G fseek(f, idh.e_lfanew + 4, SEEK_SET);" j2 G, C- p3 W$ ?3 Z* g2 k4 U- s
' z( T) ?& P; x. Q- ~: S; a
fread(&ifh, sizeof(ifh), 1, f);
( @& K8 B2 W6 ^" Q: h# @
2 |$ }0 s6 @4 O& ~ P% x; c$ r$ R0 Y9 G
8 u8 ~0 A% U/ C5 s! }# n fclose(f);
& k) ^+ L, m. J( K4 S# k1 L0 ?2 _4 i7 y8 w3 m
% K) @, R9 k% V$ i, M return ifh.Machine;1 G8 j1 _7 b- X* Y4 K- {& V
, [, K0 P! }/ L% l3 C}
+ f, l, }2 g8 K( F4 Q; U
) [/ H; ^/ P7 n) `' i7 L
+ a( K+ t. D# O3 O, M9 }% B1 g( u/ O9 `9 Q$ Y7 _% J
5 p5 X* Y* }, w) g% x( k/ T9 ~// C/C++判断dll是多少位的
. c' @5 I2 o! N2 o$ y1 c3 q' w) T) c
) x! O( l% T; h2 U9 a int n = CrnGetImageFileMachine("E:\\temp\\setup.exe");: h9 [! v& _" A" ]/ }3 ?: K- ^' E
3 @; ]; b. i3 s: h/ t# ~! ~
if (n == 0x014C) ShowMessage("x86");
; C( J8 @% [; ?! Q% c else if (n == 0x0200) ShowMessage("IA64");
2 H$ S; z' p) F4 {- H9 o else if (n == 0x8664) ShowMessage("x64");
/ H* S3 B3 ~% {: K/ l else ShowMessage("抱歉检测不出来");
% x1 A' p( P# A, K4 W7 |' s7 {. t% }! \3 V
) B" M! M' A4 f6 z% |$ E
|
|