判断操作系统是32位还是64位_zqt520的博客-程序员宅基地

技术标签: delphi  c++  null  winapi  linux  function  api  windows  

Solution:
--------------------------------------------------------------------------------------------------------------------
1> For Linux
a)  getconf WORD_BIT
b)  file /sbin/init
c)  uname -a


2> For HP-UX
#getconf HW_32_64_CAPABLE
#getconf HW_CPU_SUPP_BITS
#getconf KERNEL_BITS


3> For Solaris
isainfo -v
isainfo -kv
isainfo -b


4> For Windows
#include <windows.h>
#include <stdio.h>


BOOL IsWow64()
{
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
LPFN_ISWOW64PROCESS fnIsWow64Process;
BOOL bIsWow64 = FALSE;
fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(
GetModuleHandle("kernel32"),"IsWow64Process");
if (NULL != fnIsWow64Process)
{
if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
{
return FALSE;
} else
return TRUE;
}
return bIsWow64;
}


int main()
{
BOOL f64;
f64 = IsWow64();
if (f64)
printf("64\n");
else
printf("32\n");
}
主要是利用了IsWow64Process,这是一个windows api,如果进程是运行在64位系统上的32位程序,则返回TRUE,我们用32位方式编译这个程序并运行,即可判断操作系统的位数。
补充Delphi版的,写出一个函数了,直接调用~
function RunningInWow64:boolean;
type
LPFN_ISWOW64PROCESS=function(Hand:Hwnd; Isit:Pboolean):boolean; stdcall;
var
pIsWow64Process:LPFN_ISWOW64PROCESS;
IsWow64:boolean;
begin
result:=false;
@pIsWow64Process:=GetProcAddress(GetModuleHandle('kernel32'),'IsWow64Process');
if @pIsWow64Process=nil then exit;
pIsWow64Process(GetCurrentProcess,@IsWow64);
result:=IsWow64;
end;
转自:http://hi.baidu.com/zhujian0805/blog/item/88c9af39dff7fefa3b87ce78.html/cmtid/061401ecf2b29ada2f2e2118

ps:sizeof只能判断当前编译程序的位数,而非操作系统的位数。


方法1,msdn 有相应的例子,代码贴出来给你看看

MSDN有相应Example! 

#include   <windows.h> 

typedef   BOOL   (WINAPI   *LPFN_ISWOW64PROCESS)   (HANDLE,   PBOOL); 

LPFN_ISWOW64PROCESS   
fnIsWow64Process   =   (LPFN_ISWOW64PROCESS)GetProcAddress( 
GetModuleHandle( "kernel32 "), "IsWow64Process "); 

BOOL   IsWow64() 
{ 
BOOL   bIsWow64   =   FALSE; 

if   (NULL   !=   fnIsWow64Process) 
{ 
if   (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64)) 
{//   handle   error 
std::cout < < "Handle   Error " < <std::endl; 
} 
} 
return   bIsWow64; 
} 



方法2:
GetSystemWow64Directory 
判断这个文件夹是否存在


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zqt520/article/details/7540305

智能推荐

springMvc+myBatis上传图片到mySQL数据库_丶瓦力的博客-程序员宅基地

思路:将前台上传的file存到pojo类中的MutipartFile类型字段中,再将MulipartFile转换为byte[]数组,最后存入数据库longBlob类型字段中    1、jsp(enctype必须设置为"multipart/form-data") 上传头像 上传头像

ubuntu16.04下安装cmake3.16.0_freemote的博客-程序员宅基地

本文来源公众号【程序员的思考】使用apt工具安装的cmake版本是3.5.0的,版本比较低,在这里需要安装高版本的cmake工具,因此直接在cmake官网下载最新的工具(https://cmake.org/download/)。1、下载安装文件cmake官网提供了两种方式,源码安装和二进制安装,我们使用二进制安装:2、放到合适的位置,例如/usr/local/cmake目...

模板和代码生成器_Ning&Li的博客-程序员宅基地_代码生成器 模板语法

模板1.模板技术动态页面静态化模板 + 数据 = 文本freemarker(.ftl)velocity(.vm)velocity模板技术1.Maven导包&lt;!-- 代码生成器模版技术 --&gt;&lt;dependency&gt; &lt;groupId&gt;org.apache.velocity&lt;/groupId&gt; &lt;artifactId&gt;...

查看ES版本号(Elasticsearch)_行走的码农00的博客-程序员宅基地_es版本

记录下说明:Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。Elasticsear..

poj 3254 Corn Fields(状态压缩dp)_zthgreat的博客-程序员宅基地

Corn FieldsDescriptionFarmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) square parcels. He wants to grow some yummy corn for the cows on

es对分组后结果进行统计_es数据二次开发统计展示_weixin_39787397的博客-程序员宅基地

案例1在es查询中按照多列分组的时候 分组列的count值会越来越少 es默认隐藏了没有被分组匹配到的记录数 需要在查询的时候开启2.开启显示没有被分组成功的记录分组成功的记录加上分组missing的记录数就等于总的记录数 26932+2666=295983.当实际的总数和es分组统计的条数对不上的时候 需要考虑是不是分组列的值有可能被丢失了 这个时候可以开启显示丢失4.查看es的原始日志内容...

随便推点

Fleury Algorithm_weixin_34355881的博客-程序员宅基地

I don't know why writing this article.Several days ago, Mrs Yee told us that traslations would be replaced by writing, hoo,hoo,this is a practice in some way.When I w...

SVM多类分类方法_hechenghai的博客-程序员宅基地

SVM多类分类方法的实现根据其指导思想大致有两种:(1)将多类问题分解为一系列SVM可直接求解的两类问题,基于这一系列SVM求解结果得出最终判别结果。(2)通过对前面所述支持向量分类机中的原始最优化问题的适当改变,使得它能同时计算出所有多类分类决策函数,从而“一次性”地实现多类分类。原始问题可以改写为:虽然第(2)种指导思想看起来简单,但由于它的最优化问题求解过程太复杂,计

elasticsearch更新数据_浮生飘血的博客-程序员宅基地_elasticsearch 更新

private static TransportClient client=EsClient.getTransportClient();1、更新方法(一)   public static void upMethod1(String index,String type,HashMap map) {        try {            // 方法一:创建一个Update

Windows 系统还原_swfhcsdn的博客-程序员宅基地

        1.延长还原点生存期:           Windows 系统还原默认情况下只能将还原点保留90天,想要保存更长的时间,可以通过修改注册表的方法:点击“开始->运行”,输入regedit.exe回车打开“注册表编辑器”,打开左边窗口的“HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/SystemRes

Python基本语法_异常处理详解_范桂飓的博客-程序员宅基地

目录目录异常异常类型异常处理触发异常raise传递异常assert语句触发异常捕获异常tryexceptelse捕捉多个异常tryfinally语句自定义异常withas触发异常自动关闭资源as获取异常信息异常参数traceback追踪异常sysexc_info获取异常信息最后异常异常即非正常状态,在Python中使用异常对象来表示异常。若程序在编译或运行过程中发生错

Eclipse中Debug 查看变量报 com.sun.jdi.ObjectCollectException occurred while retrieving value错误 解决方式_杀神lwz的博客-程序员宅基地

一、com.sun.jdi.ObjectCollectException occurred while retrieving valueEclipse中Debug 查看变量报 com.sun.jdi.ObjectCollectException occurred while retrieving value错误 解决方式com.sun.jdi.ObjectCollectException occurred while retrieving value异常,字面上我们可以看出,是对象收集异常,是垃圾回

推荐文章

热门文章

相关标签