欢迎来到代码驿站!

.NET代码

当前位置:首页 > 软件编程 > .NET代码

C#判断DLL文件是32位还是64位的示例代码

时间:2022-06-12 09:35:16|栏目:.NET代码|点击:

c#判断dll文件是32位还是64位,实例代码如下所示:

using System;
using System.IO;

namespace GetDllVersionDemo
{
/// <summary>
///     https://www.cnblogs.com/LifeDecidesHappiness/p/15711169.html
///     C#判断DLL文件是32位还是64位
///     LDH @ 2021-12-20
/// </summary>
internal class Program
{
private static void Main()
{
Console.Title = "C#判断DLL文件是32位还是64位";

GetDll32Or64();

            Console.ReadKey();
}

        private static void GetDll32Or64()
{
var dllPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Dll\IBM.Data.Informix.dll");
var result = GetPeArchitecture(dllPath);
//523 64位    267 32位
if (result == 523)
Console.WriteLine(dllPath + "是【64】位的dll");
else if (result == 267)
Console.WriteLine(dllPath + "是【32】位的dll");
else
Console.WriteLine("执行错误!");
}

        /// <summary>
///     获取dll文件是32位还是64位
///     523 64位    267 32位
/// </summary>
/// <param name="dllFilePath">dll文件路径</param>
/// <returns></returns>
public static ushort GetPeArchitecture(string dllFilePath)
{
ushort architecture = 0;

            try
{
using (var fStream = new FileStream(dllFilePath, FileMode.Open, FileAccess.Read))
{
using (var bReader = new BinaryReader(fStream))
{
if (bReader.ReadUInt16() == 23117) //check the MZ signature
{
fStream.Seek(0x3A, SeekOrigin.Current); //seek to e_lfanew.
fStream.Seek(bReader.ReadUInt32(), SeekOrigin.Begin); //seek to the start of the NT header.
if (bReader.ReadUInt32() == 17744) //check the PE\0\0 signature.
{
fStream.Seek(20, SeekOrigin.Current); //seek past the file header,
architecture = bReader.ReadUInt16(); //read the magic number of the optional header.
}
}
}
}
}
catch
{
// ignored
}

            // if architecture returns 0, there has been an error.
return architecture;
}
}
}

上一篇:简介Winform中创建用户控件

栏    目:.NET代码

下一篇:.Net连接数据库的方式详解

本文标题:C#判断DLL文件是32位还是64位的示例代码

本文地址:http://www.codeinn.net/misctech/204549.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有