咨询区

  • Jonathan Allen

我有一个 .NET 应用程序,我觉得它现在是 32bit,但又不确定构建服务器是否真的帮我编译成了 32bit,请问我有什么办法可以检测当前的程序是否是真的 32bit ?

回答区

  • Jaco Pretorius

你想判断运行的应用程序是 32bit 还是 64bit 的话,方法有很多。

  1. 任务管理器

打开 windows 任务管理器,查看该进程名后面是否有 *32 字样,如果由此字样那就说明是 32bit应用程序,反之为 64bit。

  1. Is64BitProcess属性

.NET 的 Environment 类提供了一个 Is64BitProcess 属性,你可以判断 true/false 来获取当前是否为 32bit/64bit 。

//// Summary://     Gets a value that indicates whether the current process is a 64-bit process.//// Returns://     true if the process is 64-bit; otherwise, false.public static bool Is64BitProcess{get { }}
  1. 使用 win32 api

Win32 API 中提供了一个 IsWow64Process 方法,可以借助它实现,参考如下代码:

[DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool IsWow64Process([In] IntPtr hProcess,[Out] out bool wow64Process
);

接下来包装成一个可以判断 Process 的 IsProcess64() 方法。

public static bool IsProcess64(Process process)
{if ((Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor >= 1) || Environment.OSVersion.Version.Major >= 6) {bool ret_val;try {if (!WindowsAPI.IsWow64Process(process.Handle,out ret_val)) ret_val = false;} catch {ret_val = false;}if (!ret_val && IntPtr.Size == 8) {return true;} else {return false;}} else {return false;}
}
  1. 使用 corflags.exe

corflags.exe 小工具可以配置和查询 应用程序 header 部分的 CorFlags 标记 从而知道你的程序是 32bit 还是 64bit。

具体参考MSDN连接:https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-2.0/ms164699(v=vs.80)?redirectedfrom=MSDN

  1. IntPtr.Size

可以在程序运行来之后,判断 IntPtr.Size 的值,如何 IntPtr.Size == 4 的话,很显然是 32bit,如何 IntPtr.Size == 8 说明当前是 64bit。

点评区

其实判断方法有很多,看应用程序的 PE 头是个好办法,或者通过工具查看下进程的内存地址的长度来判断32还是64bit。

如何判断一个程序是 32bit 还是 64bit ?相关推荐

  1. Windows编程-判断一个程序是64还是32位的小程序

    //编写一个判断进程是否位64位程序的函数 typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); LPFN_ISWOW64PROCES ...

  2. 发现一个windows7(32bit或64bit)DirectUI的bug

    前段时间发现一个windows7的一个bug,不是什么严重的问题,我在此记录下.(转载请指明出于breaksoftware的csdn博客) 重现步骤如下: 0 在文件夹的"更改您的视图&qu ...

  3. 判断一个程序员水平高低的标准?

    a.结果导向 胜者为王,败者为寇.也可以理解为做过什么NB的项目,带来了多少价值. b.竞赛比武 在同一平台下,大家八仙过海各显神通. c.广度和深度 在平时工作或交谈中,逼格最高者被大家膜拜. d. ...

  4. 如何判断一个程序员写代码好与不好?

    评判一段代码写得好不好,一般可以从以下几个方面来看: 1.代码书写是否符合业界通用规范,如PHP代码要符合PSR系列规范. 2.代码是否简洁,一段代码能用一行实现的尽量不要使用两行. 3.代码是否可重 ...

  5. 如何分辨一个程序员是不是水货?

    最近有一位前同行问我:有哪些话一听就知道 一个程序员是个水货啊 他之所以问我这样的问题,主要是因为我面试过很多程序员 在这方面会有一些经验 还有就是他们公司也最近在招程序员 所以尽量避免招到一些不合适 ...

  6. 判断一个整数是否是水仙花数 || 编写程序,根据输入的月份和年份,求出该月的天数(1-12)|| 运算符的优先级问题 ||输出小写的a-z以及大写的Z—A||求出1-1/2+1/3-1/4…..1/

    判断一个整数是否是水仙花数,所谓水仙花数是指一个3位数,         其各个位上数字立方和等于其本身.例如: 153 = 1*1*1 + 5*5*5 + 3*3*3                 ...

  7. 使用程序判断一个文件是否是有效的PE文件

    判断一个文件是否为有效的PE文件,判断2个字段: DOS头的e_magic字段是否为0x5A4D: NT头的Signature字段是否为0x00004550: 若都是的话则是一个有效的PE文件: VC ...

  8. ubuntu c 判断程序是否启动_刚刚接触编程的我,怎么判断自己是否适合做一个程序员?...

    其实对于这个问题,很多刚刚进入大学选择计算机相关专业的小伙伴都会有类似的疑惑,不知道自己该不该学习编程,适不适合学习编程,以后走程序员这条路适不适合自己等等.那么今天,笔者在这里简单来说一下:我们如何 ...

  9. Java黑皮书课后题第7章:7.4(分析成绩)编写一个程序,读入个数不确定的考试分数,并且判断有多少个分数是大于或等于平均分,多少个分数是低于平均分的。输入一个负数表示输入结束。假设最高分是100

    7.4(分析成绩)编写一个程序,读入个数不确定的考试分数,并且判断有多少个分数是大于或等于平均分,多少个分数是低于平均分的.输入一个负数表示输入结束.假设最高分是100 题目 题目描述 破题 代码 运 ...

最新文章

  1. 2020-10-26runtime error: member access within null pointer of type ‘struct ListNode‘ (solution.cpp)错
  2. 19. 删除链表的倒数第N个节点
  3. Vulkan统一所有平台的API
  4. python创建一个txt文件-python中如何创建一个txt文件
  5. 论文解读 | 利用脑功能连接实现疲劳驾驶检测
  6. cocos2d 解密ccbi_cocos2d-x高级学习
  7. Hibernate关联关系配置(一对多、一对一和多对多)
  8. jooq sql_使用jOOQ和JavaFX将SQL数据转换为图表
  9. 【原】iOS:手把手教你发布代码到CocoaPods(Trunk方式)
  10. 大哥你需求里说只要工作流引擎组件,怎么真正需要的东西这么.悲剧了,客户需求无止境...
  11. matlab gpu deep learning_优秀!这个库帮你使用GPU加速传统机器学习方法和Pandas数据处理...
  12. .net下调用WebService
  13. WinEdt 参考文献格式
  14. 如何在Eclipse 中查看(如Objects)的源代码
  15. php模拟post提交 在线,curl post请求 , postman 模拟请求 , 在线测试工具模拟请求...
  16. rup 裁剪_小型软件项目RUP裁剪模型的研究
  17. 弹性地基梁板的计算理论_弹性地基梁的计算方法是什么?
  18. 3.用Python爬虫,2003-2021的双色球数据
  19. 分享一些百度贴吧引流的实用干货和防删技巧
  20. 根据string查询是否是当月_发票勾选、查询、认证等25问!简直太全了!打印出来贴在桌子上学习!...

热门文章

  1. MySQL的四种不同查询的分析
  2. cocos2d-x学习 之一
  3. 深入探讨用位掩码代替分支(8):SSE指令集速度测试
  4. 彻底解决.net中编码问题的心得
  5. Lie to me不错
  6. 行内元素中去掉文字的上下间距,使得文字所在元素的高度同字体高度一致的方法...
  7. #if defined(__cplusplus)
  8. SpringBoot集成Druid不支持多条SQL
  9. linux之拷贝文件/备份文件;按照原来的权限和日期拷贝.
  10. 物体成瘾性_科技成瘾使我们不那么快乐。 那是一个市场机会。