|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
C/C++判断dll是多少位的/ Q+ m* m; d8 x; y: o8 @, O
" q9 {# ]+ O \6 |2 h7 D$ Y! r
#include <stdio.h>
0 S! G' A9 c6 e8 A c$ G6 q4 g7 V* P#include <windows.h>
6 C' m6 F# Y7 v/ |, U2 f. j# b* r& K
; D7 X9 d* W; s8 A1 Y2 ^# Sint __stdcall CrnGetImageFileMachine(LPCSTR lpFileName)9 d- n/ F/ u5 ~" b& C- U
* B8 d* ~ _, P* r! q{
; A7 I! h! _& Z3 @/ M; {* a" i; R, O1 z1 e1 a
IMAGE_DOS_HEADER idh;
( u8 T [# B, r) c9 B% q, c8 i+ q( Q$ d( b
FILE *f = fopen(lpFileName, "rb");
5 _: ^" N" G- H% I& A: K `
+ o7 Q9 a- W" ^! k- K- g0 a4 J fread(&idh, sizeof(idh), 1, f);
$ f, T8 j, P; Y8 ?9 m K! L+ _0 m4 v! o1 j B: j$ \. o
, E2 v3 `) S3 N! h1 L6 d$ w8 \8 h: m1 [
IMAGE_FILE_HEADER ifh;1 m! e3 w4 i: ~- R1 I9 I# q
1 C- X/ z3 t5 P; Z) S fseek(f, idh.e_lfanew + 4, SEEK_SET);% O0 ~' L% n! m( \5 w3 N1 V
m/ Q# K1 O$ e8 i* H5 N" Y x
fread(&ifh, sizeof(ifh), 1, f);
) J# X" R) u9 N6 `" k+ k4 o1 N3 M' b( P( X
( u5 m" N7 k( _+ L. T5 Q
fclose(f);
( c2 [ t8 g5 v3 Q2 ? w1 f/ I, p, D. S- R8 `( q p: h! t
) _& t3 l0 R; y/ A* Y9 n return ifh.Machine;& O; S0 q, V& Q8 L( v. U
- Y# [6 z" e6 L7 K/ M l
}! C$ b* z8 H9 _7 p4 M/ M% Q
& B1 I4 l) [, r3 Z5 t# C" ?9 a- e Z8 m, G6 o
9 N& L3 W x$ U* n! i# p t' r/ F' f2 A- Q4 m( t3 T. e
// C/C++判断dll是多少位的: P6 q4 m: `. Z1 q; G" U
2 s$ z" Z0 g( ?; N int n = CrnGetImageFileMachine("E:\\temp\\setup.exe");+ a6 c6 c9 b2 w; ? X6 P; h8 m
/ ? C. f# G2 ^
if (n == 0x014C) ShowMessage("x86");. T- c( Y O! x6 r* D! B) d$ B" P Y
else if (n == 0x0200) ShowMessage("IA64");7 v- ^& J+ W p) ]
else if (n == 0x8664) ShowMessage("x64");
! a! B0 M5 I4 m2 B else ShowMessage("抱歉检测不出来");
+ [, n+ U' Z9 Y0 |
) O) |3 O$ D+ L9 D |0 W/ E
, |2 r U* V% N3 l! D |
|