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中使用wxPython开发的一个简易笔记本程序实例
Feb 08 Python
python实现定时同步本机与北京时间的方法
Mar 24 Python
在Django中创建URLconf相关的通用视图的方法
Jul 20 Python
总结python爬虫抓站的实用技巧
Aug 09 Python
Python协程的用法和例子详解
Sep 09 Python
答题辅助python代码实现
Jan 16 Python
Python编程图形库之Pillow使用方法讲解
Dec 28 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
python模拟键盘输入 切换键盘布局过程解析
Aug 15 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
Aug 29 Python
Python Django路径配置实现过程解析
Nov 05 Python
Python语言中的数据类型-序列
Feb 24 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
Yii框架实现多数据库配置和操作的方法
2017/05/25 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
js模拟点击事件实现代码
2012/11/06 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
JavaScript中通过提示框跳转页面的方法
2016/02/14 Javascript
基于jQuery实现Accordion手风琴自定义插件
2020/10/13 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
JS计算距当前时间的时间差实例
2017/12/29 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
Mac下Supervisor进程监控管理工具的安装与配置
2014/12/16 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
python为什么要安装到c盘
2020/07/20 Python
详解Python IO编程
2020/07/24 Python
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
linux面试题参考答案(7)
2012/10/29 面试题
服装店营销方案
2014/03/10 职场文书
小学二年级学生评语
2014/04/21 职场文书
面试必备的求职信
2014/05/25 职场文书
理财计划书
2014/08/14 职场文书
赔偿协议书范本
2014/09/12 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
建议书格式
2015/02/04 职场文书
班级班风口号大全
2015/12/25 职场文书
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android