|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
C/C++判断dll是多少位的
( y f1 d# X ?+ ?& v7 q
" Q" d0 T/ t' _3 V L#include <stdio.h>
: c( a1 H- r' J#include <windows.h>( e" g- I( B7 e6 t
8 L1 Z$ E. b4 Y+ A$ E( I0 F; @. Y& p4 j. S. Q
int __stdcall CrnGetImageFileMachine(LPCSTR lpFileName)& q4 D! G6 \4 I7 p$ i! ?% C# I
' y3 ?" ~8 A. {{
% _$ ^. ]6 |, h* P" \ R$ M
' G8 D5 ]* z& ^7 i- Z IMAGE_DOS_HEADER idh;1 N( G% t( z2 n7 x ^1 [' `
, ~2 D2 _2 @- @( n
FILE *f = fopen(lpFileName, "rb");
4 t a. v% u+ M9 ^/ K% h8 n2 f; ~9 w9 ~2 b7 B3 G
fread(&idh, sizeof(idh), 1, f);- E' C6 L- K" L3 l
. a) T2 }( W& v+ m+ D/ S$ ~
1 y# C) B$ W+ Z# c; w6 i! e: x; b IMAGE_FILE_HEADER ifh;
) H ~2 j. I/ x! A* F5 K7 C2 |1 n4 C3 `1 l9 }8 [
fseek(f, idh.e_lfanew + 4, SEEK_SET);, c( \, q8 H! o! U
: w% D( I" a) `" n0 o0 ? fread(&ifh, sizeof(ifh), 1, f);
5 n( C6 c- m& ]$ d. v, b8 X1 r1 H x1 J: ^4 Q
5 A$ {* Z* y9 C% b# v% y, E$ Z fclose(f);
" A9 k. f! M2 r$ _/ }& ?/ h# V/ g7 a4 o* {2 z. k
% e' m1 T- }" ~& D1 f. q! \1 B
return ifh.Machine;
@/ R- E5 { ]* a
3 y* Y) P3 A9 M, A, U/ k}! l1 t- r% v" z- \8 N1 @: N3 m
8 G* a7 h. b j5 ?2 m2 Z+ x: j& v7 r) C1 p& [" n* w( q
: F% i3 v7 O+ `0 c! h$ F' |# V
+ R( ^% Q" o& r+ u: x( F- K1 V6 d// C/C++判断dll是多少位的
5 X" j6 f- I2 j& M7 w' O( C6 u% W2 e' Z) X
int n = CrnGetImageFileMachine("E:\\temp\\setup.exe");
* @7 i2 t6 r) _" }
) A5 ~+ ]. A' b0 M0 q if (n == 0x014C) ShowMessage("x86");9 M" h; U: q4 i' z0 W$ k
else if (n == 0x0200) ShowMessage("IA64");
, a5 \6 |) ?0 Y, F) Y) S" m else if (n == 0x8664) ShowMessage("x64");5 R8 z- n" N) r4 W, L# s
else ShowMessage("抱歉检测不出来");/ J1 Q- Q# [1 C4 |! H/ \
& @( l' `& {7 B$ o$ k
+ r, e/ o% S- ?8 t- @0 { |
|