python使用ctypes模块调用windowsapi获取系统版本示例
发布时间:2023-05-04 08:46:48
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());
猜你喜欢
- 上节基本完成了SVM的理论推倒,寻找最大化间隔的目标最终转换成求解拉格朗日乘子变量alpha的求解问题,求出了alpha即可求解出SVM的权
- python3中的字符串是一种常见的数据类型。字符串有多种表现形式:单引号、双引号和三引号,且这些字符串的表现形式(单、双、三)都必须是成对
- 为什么在facebook交友会更容易?facebook与传统的BSP(Blog Service Provider)到底有什么不同?是因为它有
- 本文实例为大家分享了python实现两张图片拼接为一张图片并保存的具体代码,供大家参考,具体内容如下这里主要用Python扩展库pillow
- 自我描述的语句指这样一种语句:它的内容就是对它本身的描述。(废话……)比如下面这句句子:这是一段自我描述的语句,除了标点符号外,它共包含12
- 一、前言二、爬取观影数据https://movie.douban.com/在『豆瓣』平台爬取用户观影数据。爬取用户列表网页分析为了获取用户,
- 本文为大家分享了pygame游戏之旅的第5篇,供大家参考,具体内容如下在游戏中添加显示文字:这里自己定义一个crash函数接口:def cr
- 不多说,直接上代码from hdfs import Clientimport pandas as pdHDFSHOST = "ht
- 这是我以前发表在经典论坛的帖子,现在转贴回来。仿淘宝网站的导航效果。此方法有几个优点:根据字数自适应项目长度不同的项目使用不同的颜色来区分无
- 其实不光是上面描述的情况会锁住表,还有很多种场景会使表放生死锁,解锁其实很简单,下面用一个示例来讲解: 1 首先创建一个测试用的表: 代码如
- ⛳️ 本次反反爬实战案例背景本篇博客选择的案例是由 VX 好友提出,他希望有一篇博客能简单的介绍清楚下面这个问题。快速定位加密参数逻辑,快速
- 但是如果在utf-8编码下,一个汉字是占3个字符长度的,比如字符串$str=”你好啊!!”; 如果你用strlen函数来判断,长度是11,正
- 在 Google 搜索结果页面中,将其 Logo 图标右键另存为后可以发现,它并非单纯的
- Module Tabs(也称选项卡,后文中简称Tab,以便更符合中国设计师的日常叫法) 是一个常见的交互元素——将不同的内容重叠放置在某一布
- Python内置函数1. classmethod、staticmethod、property 。上述三个内置函数在文章(Python进阶——
- 本文实例讲述了python实现给微信公众号发送消息的方法。分享给大家供大家参考,具体如下:现在通过发微信公众号信息来做消息通知和告警已经很普
- 1、安装pecl及创建快捷键(若安装php时已带可忽略这步安装步骤)# cd /usr/local/php/bin/ //可查看
- 如下所示: m_start =date +' 09:00' m_end =date +' 13:00'rsv
- Expire 命令用于设置 key 的过期时间。key 过期后将不再可用。r.set('2', '4028b2883
- 概要本文分步介绍了如何在运行 SQL Server 的计算机之间移动 Microsoft SQL Server 用户数据库和大多数常见的 S