|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
C/C++判断dll是多少位的6 c6 G/ k `5 s
* c- f" l0 w- b m#include <stdio.h>
1 W5 A: p6 b- U* J: |$ O#include <windows.h>: I" Z& E s3 }
! g5 \. I1 d- F1 j: ?& K) e
$ _7 T6 ?0 b$ T" L; ?3 sint __stdcall CrnGetImageFileMachine(LPCSTR lpFileName)
2 G8 \# ~5 d& Q& F! V3 G! K( W$ Q2 ^5 o; n, G
{. M; k) B' W& q( N% T+ L
7 O( m, _# Y- ~3 n/ S% \* ]: e- j IMAGE_DOS_HEADER idh;, L l6 R+ z% N) y
/ v! P3 t3 k% ]3 d' h FILE *f = fopen(lpFileName, "rb");
, J5 y: N: P7 }! s4 |4 M; a+ y) G9 [6 Q4 s9 O
fread(&idh, sizeof(idh), 1, f);
" L3 |! ?% l% R* D
* a' L1 e& J5 b( D( T# M& K4 L0 D. K# A: z
IMAGE_FILE_HEADER ifh;* w. K) p2 D4 [; m6 R6 j. T
X! C4 \' E( j( D3 @ fseek(f, idh.e_lfanew + 4, SEEK_SET);
! r1 q5 T/ ?) S6 {5 Z+ L- ]4 \/ m) N; y9 b/ ~6 V% F5 O% r0 r2 F( G* j
fread(&ifh, sizeof(ifh), 1, f);8 H: k- y X$ k8 A0 {$ x
/ R; I1 l- ^! J% m! }4 [) T$ W: m: U5 P4 M; \" O; _ v/ z% C
fclose(f);$ ?6 P, P S& p6 y, g9 l8 |
- E! k$ [8 a) z1 \& ~6 G: |& |) K& [7 m! C
return ifh.Machine;7 `" ?, D& x+ y% N" @
) y! Q9 x+ v! N2 T% ]}5 V1 B8 v: K5 h2 P6 b
5 O; c* r2 I- K2 }0 n1 ]6 ]* H8 q4 O9 c# s" t) {' N" W8 r- j0 w" Q+ S/ e
* o$ C! y) ^) D u7 Z2 y( E2 s& I- ~/ h' n0 j, |9 D
// C/C++判断dll是多少位的) y7 m' }) |& N3 H: l$ {! }; E
) A+ `4 o" X# z: N int n = CrnGetImageFileMachine("E:\\temp\\setup.exe");
2 f+ k7 y) j6 [5 c; g) y3 t# i$ b4 `, |; d; t4 x
if (n == 0x014C) ShowMessage("x86");& A( Y& j, }+ d9 v% J0 V
else if (n == 0x0200) ShowMessage("IA64");
; y* y0 R7 m6 u else if (n == 0x8664) ShowMessage("x64");' q) }& C- L/ i( G& l4 C. v
else ShowMessage("抱歉检测不出来");. V4 m: ~& B. c
8 g9 O! y$ f! h: r1 P
4 u9 g0 S* Y Q% k |
|