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之开始真正编程
Sep 12 Python
Python解析网页源代码中的115网盘链接实例
Sep 30 Python
使用 Python 实现微信公众号粉丝迁移流程
Jan 03 Python
对python内置map和six.moves.map的区别详解
Dec 19 Python
详解Python循环作用域与闭包
Mar 21 Python
pandas计数 value_counts()的使用
Jun 24 Python
python随机数分布random均匀分布实例
Nov 27 Python
如何解决安装python3.6.1失败
Jul 01 Python
Python unittest生成测试报告过程解析
Sep 08 Python
python实现Thrift服务端的方法
Apr 20 Python
Python带你从浅入深探究Tuple(基础篇)
May 15 Python
Python Flask请求扩展与中间件相关知识总结
Jun 11 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
十天学会php之第八天
2006/10/09 PHP
php 利用array_slice函数获取随机数组或前几条数据
2015/09/30 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
PHP 微信扫码支付源代码(推荐)
2016/11/03 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
jquery 指南/入门基础
2007/11/30 Javascript
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
js中的如何定位固定层的位置
2014/06/15 Javascript
Bootstrap字体图标无法正常显示的解决方法
2016/10/08 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
Koa代理Http请求的示例代码
2018/10/10 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
vue实现鼠标经过动画
2019/10/16 Javascript
JavaScript语句错误throw、try及catch实例解析
2020/08/18 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
用pickle存储Python的原生对象方法
2017/04/28 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
Python3对称加密算法AES、DES3实例详解
2018/12/06 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
2020/01/09 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
优秀研究生主要事迹
2014/06/03 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
2015年小学生新年寄语
2014/12/08 职场文书
2015年商场工作总结
2015/04/27 职场文书