|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
C/C++判断dll是多少位的
4 V2 y8 d: r5 o8 k1 \+ e/ ?9 h- R9 r7 H4 x: O( E" |/ M9 L' z
#include <stdio.h>7 ~$ j9 e! W$ i* `& M
#include <windows.h>
6 y9 I5 t# k) v8 Q# t! p* K( i
9 q0 _- y3 [5 w& Y& b- ]5 o) n7 U8 ~8 W3 o5 ]. ?. y& @" x% e$ X
int __stdcall CrnGetImageFileMachine(LPCSTR lpFileName)
" D0 Y. H, A' Z% O* K& N# \0 l5 M+ U, C: g( p! X! l4 C
{/ a6 W: v; q! A; U X
- }/ X4 C. s4 a4 a
IMAGE_DOS_HEADER idh;
! @; l Z- h& N) U- J
4 N6 T# [& Y" p0 E- m/ Y3 [ FILE *f = fopen(lpFileName, "rb");
4 x. T7 Q$ J/ E V* s& J* Q& `5 X+ W* U3 [3 W$ M( Q
fread(&idh, sizeof(idh), 1, f);
/ _4 u5 F3 Q: ^- Y5 c# p. L1 d5 U6 o% L4 ~8 G A! }: a( |
9 e0 d6 [8 v6 M" @1 r* {+ B, S IMAGE_FILE_HEADER ifh;% \, `* G p' i7 v
' h# l0 j. I- s( O" p fseek(f, idh.e_lfanew + 4, SEEK_SET);
; f$ |$ i+ X* n' w) R6 x; `! v( s
9 r# U$ c) G; q7 ?$ O7 h fread(&ifh, sizeof(ifh), 1, f);; R9 R2 c+ k$ n3 D, A
, [6 N! p3 Q7 x
+ \ Q# |& k8 w4 j" D+ b fclose(f);! a; o0 J) U7 T% U2 T2 u! h$ o) }
0 v3 G' Y; ]$ Z. y7 e1 W
( {/ w' D* S$ y( _- V0 B return ifh.Machine;
. u0 w+ x7 y- ~& [+ h! ]0 u2 \, _9 i. ?, F/ j0 K% S2 S
}2 b( D, [- s; q3 J4 f
; Q0 ~. o Y" |( }5 o, `
7 G U; p6 f+ q8 v; k5 ]
$ f, _* v2 a. Y3 w# E; g* ^( S9 d# J8 h) [6 F3 n
// C/C++判断dll是多少位的" ?9 G( M$ X7 _7 i5 @* `
t1 Y7 Q. ]% |6 j int n = CrnGetImageFileMachine("E:\\temp\\setup.exe");
; Q! J* e* q' E( T1 \9 j5 w
4 G$ |7 f/ g5 v" ~; V1 Z if (n == 0x014C) ShowMessage("x86");
4 Q! F& s5 E9 Q, w& |/ g+ r else if (n == 0x0200) ShowMessage("IA64");
r! M0 X5 N% r1 l' a else if (n == 0x8664) ShowMessage("x64");
, O9 b0 B5 G% n# r+ \1 l5 ` else ShowMessage("抱歉检测不出来");+ U& r* C# b- ]; m) n
: T, \7 X8 V* R0 }' J
. X( {3 \* |: U$ z2 t( T
|
|