|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
C/C++判断dll是多少位的
. ~$ y2 X K" E) L1 l; Z# A: L: G: X9 d4 w: ]
#include <stdio.h>; N7 i$ |, ]5 ?0 l" p: b/ q G
#include <windows.h> p1 n2 n1 r0 |; l% N, O$ |
7 m( }1 `: l$ r' L7 x8 u4 f- R" a" D. ?: a7 ^
int __stdcall CrnGetImageFileMachine(LPCSTR lpFileName)
- |8 e( P' g8 t% u8 C7 a: E; ^ ]4 B& Z$ h1 I6 E
{9 ]( P1 ~! v# y
! U) V! w6 x. f+ [7 @ IMAGE_DOS_HEADER idh;
) N7 N8 r- }0 S( j/ _
; a8 ~1 r- a. s" H FILE *f = fopen(lpFileName, "rb");: V; |3 J% Z5 B% |/ L
2 a- a9 ?0 H. M0 e, e( ^ fread(&idh, sizeof(idh), 1, f);( | S& e8 T. _, L, ~* r
! Z6 @1 Q* m) T/ ?8 W
: r* H$ @" b' ~5 p IMAGE_FILE_HEADER ifh;
, N5 x+ I2 Y5 M0 T8 j1 A- ^- e# | x% i" M7 C, [: |6 j, F8 \
fseek(f, idh.e_lfanew + 4, SEEK_SET);
5 x- \% }$ Q- N
. f. g' g2 C! J$ h fread(&ifh, sizeof(ifh), 1, f);/ }; p+ u" M+ b4 F4 ~; e
7 X! e7 ?) _! Z! [3 V! Q+ f) t$ L9 h) |6 t4 m+ n
fclose(f);
0 U. f/ Q- U& O3 x, s! M, f0 X5 w. x: G0 o
& f& n: H2 t1 _5 `) M" ~ return ifh.Machine;: r2 @1 u! P5 k8 s
, {5 i i$ A4 ^& N}
- w/ \5 v' u) n; q9 Z
$ `3 b1 T8 Y" H7 B1 a( [! ?3 p v; \$ x0 s- x
8 D: w! C! ~0 q/ \8 c& z2 x3 f
# D# E+ u3 b0 C3 j- {) {// C/C++判断dll是多少位的5 i8 d$ z. o3 P0 E; u' j* U
/ A- m* c+ ~) _( m8 `9 {) x int n = CrnGetImageFileMachine("E:\\temp\\setup.exe");
+ H/ [7 q6 S2 P2 O9 Q3 {# P8 Q1 u$ w# B! v
if (n == 0x014C) ShowMessage("x86");! i* b6 _0 c: T% C, P: P& A
else if (n == 0x0200) ShowMessage("IA64");
8 a6 q& D) p0 e2 a! k else if (n == 0x8664) ShowMessage("x64");
, [* Y) ]# K$ W& } else ShowMessage("抱歉检测不出来");: B! T9 s3 q4 q5 ?% ~7 f! T$ T
3 U! f) d; u) E( V4 S. f) l' v
& ^4 ^; ?3 W4 ?" j8 | |
|