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 相关文章推荐
Linux下使用python自动修改本机网关代码分享
May 21 Python
用pickle存储Python的原生对象方法
Apr 28 Python
python使用fork实现守护进程的方法
Nov 16 Python
python实现数独游戏 java简单实现数独游戏
Mar 30 Python
python3+PyQt5实现文档打印功能
Apr 24 Python
python 获取utc时间转化为本地时间的方法
Dec 31 Python
python验证身份证信息实例代码
May 06 Python
使用PYTHON解析Wireshark的PCAP文件方法
Jul 23 Python
基于python实现语音录入识别代码实例
Jan 17 Python
Python pandas如何向excel添加数据
May 22 Python
Python 发送SMTP邮件的简单教程
Jun 24 Python
Django框架中表单的用法
Jun 10 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学习教程之第1天
2008/06/15 PHP
PHP中常用的转义函数
2014/02/28 PHP
window.dialogArguments 使用说明
2011/04/11 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
2015/08/28 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
原生js轮播特效
2017/05/18 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
Python strip lstrip rstrip使用方法
2008/09/06 Python
python原始套接字编程示例分享
2014/02/21 Python
Python实现多线程下载文件的代码实例
2014/06/01 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
详解使用python crontab设置linux定时任务
2016/12/08 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题
2012/12/13 HTML / CSS
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
River Island美国官网:英国高街时尚品牌
2018/09/04 全球购物
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
Linux面试经常问的文件系统操作命令
2015/11/05 面试题
入党申请书自我鉴定
2013/10/12 职场文书
新闻专业大学生找工作的自我评价
2013/10/30 职场文书
中专生自我鉴定
2013/12/17 职场文书
向国旗敬礼学生寄语大全
2014/09/30 职场文书
单位推荐信范文
2015/03/27 职场文书
运动会入场词
2015/07/18 职场文书
远程教育学习心得体会
2016/01/23 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers