|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
C/C++判断dll是多少位的
1 D# c% ]) J/ u! J& k/ K2 l: ^1 d8 d" E
#include <stdio.h>
6 x4 j, H w# d- p! D! V#include <windows.h>
4 C" M2 y8 o m, L3 `4 W' i& ?) v& W+ |
' |3 V, l' e R( x
int __stdcall CrnGetImageFileMachine(LPCSTR lpFileName)
. S7 V1 Q7 D7 d% B! Q# y3 o" L4 F
{* w O( j J, e' r) O6 Y
1 W2 i6 s8 Z% s# o* i IMAGE_DOS_HEADER idh;( L* l' f% I9 U
' A& J/ U- U7 {" { FILE *f = fopen(lpFileName, "rb");# J% a1 N/ e- a8 x# F6 W6 p
* L" _" }$ o6 | W$ f fread(&idh, sizeof(idh), 1, f);6 R8 z! z$ [7 O! W. ?0 b
4 J& o$ I2 v2 ~7 M! R# h! l# G' \
% D, z6 c, f/ L! E# r2 q$ W5 Y
IMAGE_FILE_HEADER ifh;
5 k# N+ g! u B8 V D2 {$ B* b9 e2 l. v& }
fseek(f, idh.e_lfanew + 4, SEEK_SET);
* I% h& G+ n+ D: D: P5 T
+ O! B# O. @( O/ \% d( K# D fread(&ifh, sizeof(ifh), 1, f);0 f2 o* G1 v1 @
, v; a9 P; m: c
2 }7 A8 U( H6 v6 u7 \( ~ fclose(f);
2 S" \: X& ~! a3 E3 _
/ r' K1 }& g% m6 _8 G/ W# G" I( r# q# x* v5 H( `% _7 V
return ifh.Machine;
T8 X: W9 y& Y2 @+ m, i( v, V9 G5 T1 E6 N1 F
}& d2 o% f+ R2 C# W$ J$ F
0 t R6 n0 T" R# Z
/ @. l% A- Q% B
q; f& E) [. A3 X1 c1 C# p5 o0 D" I$ ]
// C/C++判断dll是多少位的3 |' M8 n: H- D7 H6 R) G
8 h# l" P( P2 j1 @ int n = CrnGetImageFileMachine("E:\\temp\\setup.exe");4 T+ p: V7 N2 o& G: \" Z
o4 C, H) R8 k5 U8 T
if (n == 0x014C) ShowMessage("x86");+ L& H1 h: a9 @9 Q9 e6 t2 o( S
else if (n == 0x0200) ShowMessage("IA64");
9 U' i0 C7 [( d K! s else if (n == 0x8664) ShowMessage("x64");
# e' w( ?0 P: B& U else ShowMessage("抱歉检测不出来");& ^, b, Y9 B! W. R/ R! i
& A7 Y0 L/ n0 R* F! C7 s# D. a t% b( q8 _4 y: N5 ^% @$ X
|
|