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操作MySQL数据库具体方法
Oct 28 Python
简单介绍Python中的filter和lambda函数的使用
Apr 07 Python
Python的Django框架中URLconf相关的一些技巧整理
Jul 18 Python
多个应用共存的Django配置方法
May 30 Python
50行Python代码获取高考志愿信息的实现方法
Jul 23 Python
Python中的 sort 和 sorted的用法与区别
Aug 10 Python
python修改FTP服务器上的文件名
Sep 11 Python
用python求一重积分和二重积分的例子
Dec 06 Python
Django中ORM找出内容不为空的数据实例
May 20 Python
Python Http请求json解析库用法解析
Nov 28 Python
Python爬虫实现selenium处理iframe作用域问题
Jan 27 Python
Python中seaborn库之countplot的数据可视化使用
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
Laravel实现短信注册的示例代码
2018/05/29 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
简单的JS多重继承示例
2008/03/13 Javascript
jquery 动态创建元素的方式介绍及应用
2013/04/21 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
2013/12/30 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
TypeScript入门-接口
2017/03/30 Javascript
深入理解基于vue-cli的vuex配置
2017/07/24 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
jQuery UI实现动画效果代码分享
2018/08/19 jQuery
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
Python中的hypot()方法使用简介
2015/05/18 Python
JPype实现在python中调用JAVA的实例
2017/07/19 Python
python中的set实现不重复的排序原理
2018/01/24 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
python3.6的venv模块使用详解
2018/08/01 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
2020/03/18 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
迪卡侬比利时官网:Decathlon比利时
2019/12/28 全球购物
linux下进程间通信的方式
2013/01/23 面试题
2014年大学生工作总结
2014/11/20 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
西双版纳导游词
2015/02/03 职场文书
元旦晚会开场白
2015/05/29 职场文书