|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
C/C++判断dll是多少位的( G$ `9 O1 t8 N$ b( m
) x+ {: q! a7 Y! N#include <stdio.h>* J0 W: Q4 C+ \% {
#include <windows.h>
0 [" Z, p* E; V4 Q( {4 R8 H S4 K. W5 } _! h5 F
" W* n# _- O5 ~8 ?! t& G2 m0 Tint __stdcall CrnGetImageFileMachine(LPCSTR lpFileName)
, o7 [0 s, _2 E* e/ u R- |9 I2 P7 a
9 x5 ]/ J" w3 M' P- v{7 s+ f$ d" }8 F7 [8 Y1 k6 I
% s9 o& I1 Y, u L# q" O2 |+ ?
IMAGE_DOS_HEADER idh;
9 v. ]/ `% @. M$ }& U' S& F% p4 F/ I/ |9 d {
FILE *f = fopen(lpFileName, "rb");
) l6 ^2 d2 ?, K3 ?! Q9 x6 B$ h5 n/ W- P. U: P
fread(&idh, sizeof(idh), 1, f);
/ I* w: D6 G; I) A
3 z& L" a! I/ Q; q8 a' R: i& }" @* X' o6 H& g3 ]" f2 X& J
IMAGE_FILE_HEADER ifh;( g( M0 l6 c" E9 d
# R' Z1 e$ X5 I% E
fseek(f, idh.e_lfanew + 4, SEEK_SET);
1 @3 W2 z1 e0 o0 o* h
2 I6 o. t" p- ]( U' |" J fread(&ifh, sizeof(ifh), 1, f);
! w) c |% q# X5 C7 E9 ?
; K7 I5 M* ?9 J4 K9 q4 u+ z g0 r- d+ e0 ]* G
fclose(f);2 {, u" n8 f& v, P6 v; ^/ u
0 S& X: R: k, l. P
+ g; G$ [3 k, x, X; c return ifh.Machine;4 X$ e# e) I% G+ `4 p2 T
& j0 g @6 R" B2 V}
! ^9 V" Z" r0 K2 R; l( j' Z) n. g. E% { n
- ?# Q: N0 J) x3 R3 _+ `9 h M: g& W' d
6 d7 U7 C- {% }6 B, i0 M// C/C++判断dll是多少位的6 p1 b' W1 t" H2 U4 i
; B" b. E9 G+ E$ T
int n = CrnGetImageFileMachine("E:\\temp\\setup.exe");( V2 A$ V( u+ `3 X" L8 C
7 R- M8 t `8 G2 v6 _% r4 ]
if (n == 0x014C) ShowMessage("x86");
" y3 `, \5 g* E' L' R0 R else if (n == 0x0200) ShowMessage("IA64");
( D |+ N# b9 W6 J, n: b5 D else if (n == 0x8664) ShowMessage("x64");+ [) k- t0 I* _9 b' u
else ShowMessage("抱歉检测不出来");( l7 c0 d) J' h7 b, R. s: t
5 e' q0 K9 x+ l7 i! W* N
6 T4 w7 K( m. t8 [3 n5 U |
|