python使用ctypes模块调用windowsapi获取系统版本示例


Posted in Python onApril 17, 2014

python使用ctypes模块调用windows api GetVersionEx获取当前系统版本,没有使用python32

#!c:/python27/python.exe
#-*- coding:utf-8 -*-
"通过调用Window API判断当前系统版本"
# 演示通过ctypes调用windows api函数.
# 作者已经知道python32能够实现相同功能
# 语句末尾加分号,纯属个人习惯
# 仅作部分版本判断,更详细的版本判断推荐系统OSVERSIONINFOEX结构体
import ctypes;
class OSINFO(ctypes.Structure):
    _fields_ = [
        ("dwOSVersionInfoSize",ctypes.c_long),
        ("dwMajorVersion",ctypes.c_long),
        ("dwMinorVersion",ctypes.c_long),
        ("dwBuildNumber",ctypes.c_long),
        ("dwPlatformId",ctypes.c_long),
        ("szCSDVersion",ctypes.c_char*128)
    ];
def GetSystemVersionString():
    kernel32 = ctypes.windll.LoadLibrary("kernel32.dll");
    os = OSINFO();
    os.dwOSVersionInfoSize = ctypes.sizeof(os);
    if kernel32.GetVersionExA(ctypes.byref(os))==0:
        return "Null Version";
    if os.dwPlatformId==1: #windows 95/98/me
        if os.dwMajorVersion==4 and os.dwMinorVersion==0:
            verStr = "windows 95";
        elif os.dwMajorVersion==4 and os.dwMinorVersion==10:
            verStr = "windows 98";
        elif os.dwMajorVersion==4 and os.dwMinorVersion==90:
            verStr = "windows me";
        else:
            verStr = "unknown version";
    elif os.dwPlatformId==2: #windows vista/server 2008/server 2003/xp/2000/nt
        if os.dwMajorVersion==4 and os.dwMinorVersion==0:
            verStr = "windows nt 4.0";
        elif os.dwMajorVersion==5 and os.dwMinorVersion==0:
            verStr = "windows 2000";
        elif os.dwMajorVersion==5 and os.dwMinorVersion==1:
            verStr = "windows xp";
        elif os.dwMajorVersion==5 and os.dwMinorVersion==2:
            verStr = "windows 2003";
        elif os.dwMajorVersion==6 and os.dwMinorVersion==0:
            verStr = "windows vista"; # or 2008
        elif os.dwMajorVersion>=0:
            verStr = "windows 7";
        else:
            verStr = "unknown version";
    else:
        return "unknown Version";
    return verStr+" build"+str(os.dwBuildNumber)+" "+ctypes.string_at(os.szCSDVersion);
if __name__ == "__main__":
    print(GetSystemVersionString());
Python 相关文章推荐
python比较两个列表大小的方法
Jul 11 Python
web.py 十分钟创建简易博客实现代码
Apr 22 Python
python对象及面向对象技术详解
Jul 19 Python
Python解析命令行读取参数--argparse模块使用方法
Jan 23 Python
Python装饰器用法示例小结
Feb 11 Python
利用python GDAL库读写geotiff格式的遥感影像方法
Nov 29 Python
Python笔试面试题小结
Sep 07 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
Jan 14 Python
Django models文件模型变更错误解决
May 11 Python
使用python实现时间序列白噪声检验方式
Jun 03 Python
基于Python的自媒体小助手---登录页面的实现代码
Jun 29 Python
Python加密与解密模块hashlib与hmac
Jun 05 Python
python调用windows api锁定计算机示例
Apr 17 #Python
python实现监控windows服务并自动启动服务示例
Apr 17 #Python
解决python写的windows服务不能启动的问题
Apr 15 #Python
Python和php通信乱码问题解决方法
Apr 15 #Python
Python获取脚本所在目录的正确方法
Apr 15 #Python
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
Apr 15 #Python
python中使用sys模板和logging模块获取行号和函数名的方法
Apr 15 #Python
You might like
用Apache反向代理设置对外的WWW和文件服务器
2006/10/09 PHP
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
PHP Pear 安装及使用
2009/03/19 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
微信小程序 地图map详解及简单实例
2017/01/10 Javascript
javaScript基础详解
2017/01/19 Javascript
JavaScript基础之this详解
2017/06/04 Javascript
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
JavaScript作用域链实例详解
2019/01/21 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
详解Python网络爬虫功能的基本写法
2016/01/28 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
Python3标准库总结
2019/02/19 Python
利用Python半自动化生成Nessus报告的方法
2019/03/19 Python
python装饰器常见使用方法分析
2019/06/26 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
Python导入数值型Excel数据并生成矩阵操作
2020/06/09 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
表彰先进集体通报
2014/01/12 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
授权委托书协议书
2014/10/16 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
2015年学校总务处工作总结
2015/05/19 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
js判断两个数组相等的5种方法
2022/05/06 Javascript