|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
C/C++判断dll是多少位的
4 I& b5 Q) Q- J7 v
) p% ]7 F4 X& r' @$ h+ V: s#include <stdio.h>+ \9 j ?* k% W6 P; ~8 Q
#include <windows.h>
8 o3 H* X5 M _* P! ~7 V1 @
0 s+ w0 R" B+ l5 c. j' Z3 i3 r& l
, ~! g7 f' e# L3 ^3 Bint __stdcall CrnGetImageFileMachine(LPCSTR lpFileName)3 h& O2 G/ {7 ?8 U! q
1 D6 q+ F6 v, H- b! X+ q{
# Z/ d& |) Z, n; o: n3 j$ n& t' Q( }
IMAGE_DOS_HEADER idh;
: ?" R3 N$ K6 T' o0 m7 [, W! O' X) c6 n
FILE *f = fopen(lpFileName, "rb");- X3 A7 ?% ]9 W% i' N1 G( C
6 k$ [6 F4 O3 R
fread(&idh, sizeof(idh), 1, f);3 Z/ P* ^! K4 D4 X
2 ^+ o/ {" M. ?3 i# { g9 u: w( V' ]/ J) V. @0 P% J o
IMAGE_FILE_HEADER ifh;
$ |! A& u) x# p8 @7 B1 l4 @1 G8 @) ^! D4 C' k
fseek(f, idh.e_lfanew + 4, SEEK_SET);
9 |) R" q+ n. F% F7 J
0 l' z- g) y4 K2 A" d fread(&ifh, sizeof(ifh), 1, f);
7 v+ i4 R: o% r
; { }& Z5 J" Q/ k, c6 B2 V. B: k. f- M9 g, Y3 I3 Z$ }
fclose(f);0 m" r3 k% v# r" p( I4 _% l+ U
6 H, w) P! ?: ?5 @
( T! p" U, S' G" w- h return ifh.Machine;
2 ~2 o( c( W3 \) s; J w L' ~$ G% f `$ w$ J8 ?
}
2 z( [/ ^5 c# s0 |% w& a$ o# m4 f* J; N3 O2 \5 k" N
9 o: Q9 G) ~2 {9 o
" v' i- R6 [* y t! s7 [% Z6 ]% o- W+ ?1 x+ V$ a. ~
// C/C++判断dll是多少位的
. W6 A( G% k! y5 N+ Y' }; n! {7 x1 u$ d
int n = CrnGetImageFileMachine("E:\\temp\\setup.exe");) W4 h/ a' g& R4 t
* y* l$ A% o4 q# o% h if (n == 0x014C) ShowMessage("x86");) Z3 b6 ]' A* P5 q* w
else if (n == 0x0200) ShowMessage("IA64");
+ ]2 n5 x- F8 H; r else if (n == 0x8664) ShowMessage("x64");
% m# Z# \/ k, q/ B9 {3 Y/ } else ShowMessage("抱歉检测不出来");
: v m' P: ~! |/ g
" { O. z1 f! d2 l5 A
/ @7 j8 f" `# h) a3 L. F) q |
|