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

 更新时间:2021年12月20日 15:54:37   作者:Love In Winter  
有些时候我们需要判断一下dll文件是32位还是64位,纠结该如何操作呢,下面小编通过实例代码给大家介绍下C#判断DLL文件是32位还是64位,感兴趣的朋友跟随小编一起看看吧

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;
}
}
}

到此这篇关于C#判断DLL文件是32位还是64位的文章就介绍到这了,更多相关C#判断DLL文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • unity自带寻路(导航)系统 Nav Mesh导航网格

    unity自带寻路(导航)系统 Nav Mesh导航网格

    这篇文章主要为大家详细介绍了unity自带寻路(导航)系统,Nav Mesh导航网格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • C# Email邮件发送功能 找回或重置密码功能

    C# Email邮件发送功能 找回或重置密码功能

    这篇文章主要为大家详细介绍了C# Email邮件发送功能,找回或重置密码功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • C#中C/S端实现WebService服务

    C#中C/S端实现WebService服务

    本文主要介绍了C#中C/S端实现WebService服务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 利用C#实现AOP常见的几种方法详解

    利用C#实现AOP常见的几种方法详解

    AOP面向切面编程(Aspect Oriented Programming),是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。下面这篇文章主要给大家介绍了关于利用C#实现AOP常见的几种方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • 动态改变gridview列宽度函数分享

    动态改变gridview列宽度函数分享

    通常用GridView绑定datatable,由于需要动态绑定到不同的datatable所以需要动态调整GridView的宽度。写了这个函数实现该功能
    2014-01-01
  • C#泛型集合类System.Collections.Generic

    C#泛型集合类System.Collections.Generic

    这篇文章介绍了C#中的泛型集合类System.Collections.Generic,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • c#使用windows服务更新站点地图的详细示例

    c#使用windows服务更新站点地图的详细示例

    这篇文章主要介绍了c#使用windows服务更新站点地图的详细示例,需要的朋友可以参考下
    2014-04-04
  • C#读取写入文件的3种方式示例代码

    C#读取写入文件的3种方式示例代码

    最近操作文件频繁,所以这篇文章主要给大家介绍了关于C#读取写入文件的3种方式,文中通过实例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友可以参考下
    2022-06-06
  • C#实现无损压缩图片代码示例

    C#实现无损压缩图片代码示例

    这篇文章介绍了C#实现无损压缩图片的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 如何利用反射构建元数据查看器

    如何利用反射构建元数据查看器

    本篇文章是对反射构建元数据查看器进行了详细的分析介绍,需要的朋友参考下
    2013-06-06

最新评论