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实现建立SSH连接的方法
Jun 03 Python
python 生成器生成杨辉三角的方法(必看)
Apr 10 Python
详解 Python中LEGB和闭包及装饰器
Aug 03 Python
python中的插值 scipy-interp的实现代码
Jul 23 Python
使用Python控制摄像头拍照并发邮件
Apr 23 Python
用Python识别人脸,人种等各种信息
Jul 15 Python
Python基础之变量基本用法与进阶详解
Jan 03 Python
Django def clean()函数对表单中的数据进行验证操作
Jul 09 Python
Python selenium如何打包静态网页并下载
Aug 12 Python
基于pycharm 项目和项目文件命名规则的介绍
Jan 15 Python
M1芯片安装python3.9.1的实现
Feb 02 Python
python链表类中获取元素实例方法
Feb 23 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
phpBB BBcode处理的漏洞
2006/10/09 PHP
php面向对象全攻略 (一) 面向对象基础知识
2009/09/30 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
Javascript开发包大全整理
2006/12/22 Javascript
工作中常用到的JS表单验证代码(包括例子)
2010/11/11 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
js仿网易表单及时验证功能
2017/03/07 Javascript
Vue指令的钩子函数使用方法
2017/03/20 Javascript
Ionic2开发环境搭建教程
2020/08/20 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
React Native中导航组件react-navigation跨tab路由处理详解
2017/10/31 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
详解 javascript对象创建模式
2020/10/30 Javascript
Python多线程编程(二):启动线程的两种方法
2015/04/05 Python
python爬虫爬取淘宝商品信息
2018/02/23 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
python Matplotlib模块的使用
2020/09/16 Python
CSS3 实现倒计时效果
2020/11/25 HTML / CSS
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
PHP面试题-$message和$$message的区别
2015/12/08 面试题
一套C++笔试题面试题
2012/06/06 面试题
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
毕业生医学检验求职信
2013/10/16 职场文书
员工年终演讲稿
2014/01/03 职场文书
毕业寄语大全
2014/04/09 职场文书
连带责任保证书
2014/04/29 职场文书
师范生见习报告
2014/10/31 职场文书
校长新学期寄语2016
2015/12/04 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书