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实现的防DDoS脚本
Feb 08 Python
详解Python读取配置文件模块ConfigParser
May 11 Python
Python模拟三级菜单效果
Sep 11 Python
python2.x实现人民币转大写人民币
Jun 20 Python
python模块导入的细节详解
Dec 10 Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 Python
详解pyppeteer(python版puppeteer)基本使用
Jun 12 Python
python中pytest收集用例规则与运行指定用例详解
Jun 27 Python
python 类之间的参数传递方式
Dec 20 Python
Python如何给你的程序做性能测试
Jul 29 Python
使用jupyter notebook运行python和R的步骤
Aug 13 Python
Python用access判断文件是否被占用的实例方法
Dec 17 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
UCenter Home二次开发指南
2009/05/28 PHP
PHP类的反射用法实例
2014/11/03 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
2011/09/22 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
验证手机号码的JS方法分享
2013/09/10 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
用C/C++来实现 Node.js 的模块(二)
2014/09/24 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
2016/07/01 Javascript
Vue.js教程之计算属性
2016/11/11 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
老生常谈jquery中detach()和remove()的区别
2017/03/02 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
微信小程序实现天气预报功能
2018/07/18 Javascript
Vuex实现简单购物车
2021/01/10 Vue.js
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
理解Python中的类与实例
2015/04/27 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
python实现手机通讯录搜索功能
2018/02/22 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
美国批发零售网站:GearXS
2016/07/26 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
怎样声明接口
2014/09/19 面试题
会计电算化专业毕业生推荐信
2013/12/24 职场文书
最新会计专业求职信范文
2014/01/28 职场文书
职务说明书范文
2014/05/07 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书