|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
C/C++判断dll是多少位的 _/ ^* w5 h3 Z
! v) {) M l6 C& L' g/ V#include <stdio.h>
4 p4 t: I7 \& a#include <windows.h>, Q: o* U& t3 r: [5 S9 ]2 c
, |1 Y# r& V' A' _! U7 Y
, U8 w1 x4 Z5 n, N6 r- c9 P& ?) Fint __stdcall CrnGetImageFileMachine(LPCSTR lpFileName)
1 j5 x7 c8 _: Y- C7 Z1 I: W; K7 t' H) C
{5 O: h1 w- u6 E2 B
& U* f& Z$ H1 e: D+ N/ \( o IMAGE_DOS_HEADER idh;$ r( l8 D4 ]' M& p
3 v1 E" \. |# \" }! Y. H. t6 ~1 | FILE *f = fopen(lpFileName, "rb");3 q+ Y+ X3 F6 |+ T$ Y1 @3 i1 S" y
: b. C( z5 M J P$ [
fread(&idh, sizeof(idh), 1, f);
: z/ Y% o8 O. g" ^- x" q" M5 A1 _+ I: i( E: J
. L, j5 M% V( g! H
IMAGE_FILE_HEADER ifh;4 n! i! U' k' m: E5 o
% \3 t" i) @- @, q/ Z
fseek(f, idh.e_lfanew + 4, SEEK_SET);0 K* r/ @% D1 X6 O' y* q
) u7 a5 G) m6 O) \3 Z& i; s9 i
fread(&ifh, sizeof(ifh), 1, f);
+ X4 M* E. d" n! m6 G) N5 b
8 V5 W- w0 S+ Z" [
- e- Z/ X. l# O- u fclose(f);
. S$ A7 I- Z( J- o
- e3 I" d8 v n3 u) \: K: j C. j' s
: Q9 P& S. j' y0 P return ifh.Machine;3 l+ P+ c5 t3 B @$ j( a4 u/ s, f
+ L- _: j8 @7 x" t}
2 {- A# j- y- r. d+ a
, q2 _5 t" i' e8 D; X
0 E: b; c% W: W2 Z7 O W4 w; G. k, C% @5 o: @3 Q1 |; {
9 o% h% |( G5 c- ]
// C/C++判断dll是多少位的) e" Y+ @9 n' j" }$ k7 S2 B7 r; B
2 I* ]2 r- d/ Y' G! j1 [" Z) U int n = CrnGetImageFileMachine("E:\\temp\\setup.exe");
. t% T6 F9 v' I1 \; T! s& G& g& T- m& P1 x$ |+ } O0 g0 e5 l8 j6 q
if (n == 0x014C) ShowMessage("x86");
7 |0 }' O$ L; n, Y, z else if (n == 0x0200) ShowMessage("IA64");
3 h8 S4 v7 W/ R) k" e% Q else if (n == 0x8664) ShowMessage("x64");
! R8 O) X" U3 w else ShowMessage("抱歉检测不出来");
0 ~. ?. y+ d6 T! ~ R6 X! T; Q5 a/ q, [, I+ N7 I; s) W$ e+ I
$ u0 s, { B1 }% S
|
|