|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
C/C++判断dll是多少位的
% \# s m; q* s7 M4 }' C( t% x- j! t) o0 ] w
#include <stdio.h>
1 y4 d. j7 v; H# S! D#include <windows.h>6 @# k( y7 _7 W) b- r
. ^: g) r$ e0 [' @7 h: G* S; X
# U/ P4 X. R$ X( a; D# Cint __stdcall CrnGetImageFileMachine(LPCSTR lpFileName)$ ^9 D& f5 t2 y) ]( U
6 T! P' b) g9 [8 ^4 [# R$ y9 T{
, O% f% U& C t) h3 ~1 u0 A: g
* L% L, l/ ~" i9 F5 { IMAGE_DOS_HEADER idh;
2 C% w: X/ d7 r8 Z4 N S, G/ n+ x- B4 c- h3 V% n7 y. L
FILE *f = fopen(lpFileName, "rb");+ u5 } W. J# k. r& s
, V1 q- L x3 V& x0 ]0 p fread(&idh, sizeof(idh), 1, f);" Z: n5 m1 f: H( d
5 W! ^1 e8 i$ H& R8 b# M- W! l4 w% u/ P! Q# W I, Q7 i9 E
IMAGE_FILE_HEADER ifh;
! C! I) c7 c8 c. l5 W4 g3 U. K
3 h5 Y( e( L0 ?) P( J fseek(f, idh.e_lfanew + 4, SEEK_SET);! J. Z( B" C$ a
$ c- ~/ w; t8 g
fread(&ifh, sizeof(ifh), 1, f);, ]0 J) W* u5 K+ M
0 ]& V8 S. e) F5 z( M+ ?9 l
% L1 e, s4 q/ S6 g
fclose(f);5 l/ u1 g1 E( A. L
# q% ]- Z7 T2 `' v# U* ]
5 X3 Y- v1 u9 l a7 k5 K2 }
return ifh.Machine;
" ^& W7 Z! t5 Z P' X8 Z- d4 @3 t- L
}
2 n) d) i# Q4 K' Y4 Z) z- {
3 x! ]' g/ S0 W* B- P1 m1 f/ i7 u0 y8 x7 P2 d! Q
. V4 Z; i! V9 L4 s" o4 c3 p/ X( o7 q
9 x# M7 \9 @+ G0 g6 ^# X0 N
// C/C++判断dll是多少位的* y( r) r6 ^9 l* G% h# w) G6 ^6 B) }. v
5 `' \1 @+ s2 B* F& P! z7 L int n = CrnGetImageFileMachine("E:\\temp\\setup.exe");3 f- e; Q- z% _! @4 L
" x' m- @' W% S* F! ]
if (n == 0x014C) ShowMessage("x86");1 a I3 g2 [; ^
else if (n == 0x0200) ShowMessage("IA64");' B) ]4 D7 i" c9 [# T/ b
else if (n == 0x8664) ShowMessage("x64");
7 N$ i6 L5 s$ j6 f! ~) Q+ d else ShowMessage("抱歉检测不出来");
+ l5 k. m5 p% S# S2 i; @
# m; D. t* C/ h8 H# l% p4 P2 y7 W% i3 p+ B
|
|