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之大话题小函数(2)
Oct 10 Python
python中的编码知识整理汇总
Jan 26 Python
浅析Python的web.py框架中url的设定方法
Jul 11 Python
asyncio 的 coroutine对象 与 Future对象使用指南
Sep 11 Python
Python实现的绘制三维双螺旋线图形功能示例
Jun 23 Python
基于tensorflow加载部分层的方法
Jul 26 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
Feb 21 Python
Python Flask框架模板操作实例分析
May 03 Python
Python操作qml对象过程详解
Sep 26 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
python 模拟登陆163邮箱
Dec 15 Python
python 获取谷歌浏览器保存的密码
Jan 06 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小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
jQuery.prototype.init选择器构造函数源码思路分析
2013/02/05 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
javascript常用方法汇总
2014/12/02 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
十大热门的JavaScript框架和库
2017/03/21 Javascript
js实现华丽的九九乘法表效果
2017/03/29 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
vue实现简单计算商品价格
2020/09/14 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
Python列表(list)常用操作方法小结
2015/02/02 Python
详解python如何调用C/C++底层库与互相传值
2016/08/10 Python
python与mysql数据库交互的实现
2020/01/06 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
Python的collections模块真的很好用
2021/03/01 Python
Html5+CSS3+EL表达式问题小结
2020/12/19 HTML / CSS
Hurley官方网站:扎根于海滩生活方式的全球青年文化品牌
2020/05/18 全球购物
单位办理社保介绍信
2014/01/10 职场文书
小学美术教学反思
2014/02/01 职场文书
升国旗仪式主持词
2014/03/19 职场文书
团委竞选演讲稿
2014/04/24 职场文书
考试作弊检讨书
2015/01/27 职场文书
孔庙导游词
2015/02/04 职场文书
首席执行官观后感
2015/06/03 职场文书
SpringRetry重试框架的具体使用
2021/07/25 Java/Android