|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
C/C++判断dll是多少位的
# g9 K+ c6 [$ E- T1 b; `
, j! R) k4 x; s/ d2 ]$ Z0 L) \2 g#include <stdio.h>
3 F8 c' T8 U, x6 E2 g#include <windows.h>8 z( [8 b0 ~6 T0 L z+ r
6 C$ _0 J; \9 _3 M' c S& E5 `8 O6 Y1 ~8 j+ R2 @
int __stdcall CrnGetImageFileMachine(LPCSTR lpFileName) r1 K: Z. L, b5 D/ [
( i M a0 M$ I+ |& [1 D; h: f2 z N
{
+ v0 t L8 W3 w2 b$ l' a0 v
! n" r. S: g; m" u; [ IMAGE_DOS_HEADER idh;
3 Q3 R( W/ W/ m8 T
. g+ C( l1 h! b& \/ C* K FILE *f = fopen(lpFileName, "rb");
/ d( T2 U6 \% ~- Q2 v/ r. ]* \2 v
( I0 f4 z4 o: D fread(&idh, sizeof(idh), 1, f);) N, D1 r1 H+ H' O
! G6 m: p3 L+ T$ l `8 a" C" o! p% |- A" E1 P" U
IMAGE_FILE_HEADER ifh;- v0 U6 \; s6 `" V; }
. m7 f$ Y! b5 k. m6 e* v$ e fseek(f, idh.e_lfanew + 4, SEEK_SET);3 R0 V2 A9 x5 k7 P; A
7 u L! b( v M0 _ q
fread(&ifh, sizeof(ifh), 1, f);5 w2 [! x/ |+ A2 x
/ S; `0 V, Y( u
& b" x6 W8 A! @7 d! r5 G" p6 E
fclose(f);
# j( _+ M' v1 h. ^+ y* v" _. @' I% {6 i2 R4 s6 E5 x6 Z2 M" f! G) r
3 C- L( m5 c9 g# h; f* A' A1 \
return ifh.Machine;7 x% y1 g. e* |9 v
3 j7 D) B7 _4 h}
9 R) d8 }2 _2 ~6 k$ t5 u X2 m( {% T R8 b3 k0 v
) m i2 M2 C5 e4 {! n/ S0 x9 t
/ d2 F1 K5 n$ O( J+ l9 d% S
7 a1 e1 F2 p0 h* w// C/C++判断dll是多少位的
' B; f; B: @2 {: S; P0 L
$ B5 n3 L; m3 r! b" s3 a3 H; E int n = CrnGetImageFileMachine("E:\\temp\\setup.exe");: D' x6 d7 K( s) l
/ Z" T$ d3 t' C+ y. l if (n == 0x014C) ShowMessage("x86");" f/ t5 P+ I+ w6 y: u6 ?4 d
else if (n == 0x0200) ShowMessage("IA64");" v- k, |7 T2 u J6 N
else if (n == 0x8664) ShowMessage("x64");
/ z- p& U5 a/ J1 L else ShowMessage("抱歉检测不出来");2 Q' v3 l, {, l o4 f4 `
! s" U. g; K7 P- f6 \$ i6 B; Y4 i
3 N$ [3 m" a; {" D |
|