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数组遍历的简单实现方法小结
Apr 27 Python
Python编码类型转换方法详解
Jul 01 Python
Python实现曲线点抽稀算法的示例
Oct 12 Python
python交互式图形编程实例(一)
Nov 17 Python
深入了解Python中pop和remove的使用方法
Jan 09 Python
对python pandas 画移动平均线的方法详解
Nov 28 Python
python f-string式格式化听语音流程讲解
Jun 18 Python
使用Python和Scribus创建一个RGB立方体的方法
Jul 17 Python
IronPython连接MySQL的方法步骤
Dec 27 Python
python实现电子词典
Mar 03 Python
Python3实现打印任意宽度的菱形代码
Apr 12 Python
Django一小时写出账号密码管理系统
Apr 29 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简单socket服务器客户端代码实例
2015/05/18 PHP
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
jquery 页面滚动到指定DIV实现代码
2013/09/25 Javascript
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
js仿3366小游戏选字游戏
2016/04/14 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
layui自定义ajax左侧三级菜单
2019/07/26 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
三剑客:offset、client和scroll还傻傻分不清?
2020/12/04 Javascript
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
python使用pymysql实现操作mysql
2016/09/13 Python
详解python的ORM中Pony用法
2018/02/09 Python
Python中安装easy_install的方法
2018/11/18 Python
Python中print和return的作用及区别解析
2019/05/05 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
2020/08/11 Python
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
苹果音乐订阅:Apple Music
2018/08/02 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
ddl,dml和dcl的含义
2016/05/08 面试题
装修安全责任协议书
2016/03/22 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS
Pytest allure 命令行参数的使用
2021/04/18 Python
详细分析PHP7与PHP5区别
2021/06/26 PHP
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android
Python基本数据类型之字符串str
2021/07/21 Python
mysql如何查询连续记录
2022/05/11 MySQL