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生成随机mac地址的方法
Mar 16 Python
Python解析nginx日志文件
May 11 Python
Python爬虫爬取美剧网站的实现代码
Sep 03 Python
python的命名规则知识点总结
Oct 04 Python
Python超越函数积分运算以及绘图实现代码
Nov 20 Python
用Python去除图像的黑色或白色背景实例
Dec 12 Python
Django Haystack 全文检索与关键词高亮的实现
Feb 17 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
Apr 16 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
May 27 Python
python如何编写win程序
Jun 08 Python
python与pycharm有何区别
Jul 01 Python
Python Socket编程详解
Apr 25 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
PHP5函数小全(分享)
2013/06/06 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
laravel执行php artisan migrate报错的解决方法
2019/10/09 PHP
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
javascript每日必学之封装
2016/02/23 Javascript
AngularJS 服务详细讲解及示例代码
2016/08/17 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
JS实现点击拉拽轮播图pc端移动端适配
2018/09/05 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
2019/10/31 Javascript
微信小程序音乐播放器开发
2019/11/20 Javascript
javascript 设计模式之享元模式原理与应用详解
2020/04/08 Javascript
[02:47]DOTA2英雄基础教程 野性怒吼兽王
2013/12/05 DOTA
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
Python实现的基数排序算法原理与用法实例分析
2017/11/23 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
pycharm的console输入实现换行的方法
2019/01/16 Python
python,Django实现的淘宝客登录功能示例
2019/06/12 Python
python爬虫开发之selenium模块详细使用方法与实例全解
2020/03/09 Python
30行Python代码实现高分辨率图像导航的方法
2020/05/22 Python
Python学习笔记之装饰器
2020/08/06 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
老海军美国官网:Old Navy
2016/09/05 全球购物
.NET程序员的几道面试题
2012/06/01 面试题
煤矿机修工岗位职责
2014/02/07 职场文书
求职意向书
2014/07/29 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
五年级小学生评语
2014/12/26 职场文书
2015年幼师工作总结
2015/04/28 职场文书
投资合作意向书范本
2015/05/08 职场文书
小学班主任工作经验交流材料
2015/11/02 职场文书