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创建一个最简单http webserver服务器的方法
May 08 Python
python删除过期文件的方法
May 29 Python
python模块简介之有序字典(OrderedDict)
Dec 01 Python
python实现报表自动化详解
Nov 16 Python
python编写微信远程控制电脑的程序
Jan 05 Python
Python实现获取前100组勾股数的方法示例
May 04 Python
Python异常处理操作实例详解
Aug 28 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
pytorch中的inference使用实例
Feb 20 Python
Python网络爬虫四大选择器用法原理总结
Jun 01 Python
用Python爬虫破解滑动验证码的案例解析
May 06 Python
Python语言规范之Pylint的详细用法
Jun 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
我的论坛源代码(二)
2006/10/09 PHP
生成静态页面的PHP类
2006/11/25 PHP
php一些公用函数的集合
2008/03/27 PHP
PHP nl2br函数 将换行字符转成 <br>
2009/08/21 PHP
php 函数中使用static的说明
2012/06/01 PHP
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
php调用KyotoTycoon简单实例
2015/04/02 PHP
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
PHP Echo字符串的连接格式
2016/03/07 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
jQuery替换textarea中换行的方法
2015/06/10 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
2016/07/24 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
微信小程序商城项目之侧栏分类效果(1)
2017/04/17 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
python连接sql server乱码的解决方法
2013/01/28 Python
如何在python中写hive脚本
2019/11/08 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
python Matplotlib模块的使用
2020/09/16 Python
大学学习个人的自我评价
2014/02/18 职场文书
销售员求职个人的自我评价
2014/02/19 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
2016年秋季运动会加油稿
2015/12/21 职场文书
公司周年庆寄语
2019/06/21 职场文书
mysql创建存储过程及函数详解
2021/12/04 MySQL
Python学习之时间包使用教程详解
2022/03/21 Python
golang生成vcf通讯录格式文件详情
2022/03/25 Golang