1. Windows API 与 pywin32 模块概述
Windows API 是微软为开发者提供的一套应用程序编程接口,它允许开发者直接调用操作系统底层的功能。这些 API 涵盖了系统管理的方方面面,从简单的文件操作到复杂的进程管理,再到图形界面控制,应有尽有。
pywin32 是 Python 的一个扩展模块,它提供了对 Windows API 的完整封装。通过 pywin32,Python 开发者可以轻松调用 Windows 系统的各种底层功能,而无需编写复杂的 C/C++ 代码。这个模块的强大之处在于它将 Windows API 的函数、常量和结构体都以 Python 友好的方式进行了包装,使得在 Python 中使用这些功能变得异常简单。
提示:pywin32 模块在 Python 生态中也被称为 win32api 或 win32com,它们实际上是同一个项目的不同组成部分。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心功能模块解析
2.1 系统控制与管理
Windows API 提供了丰富的系统控制功能,这些功能在 pywin32 中都能找到对应的实现:
- 系统关机控制:
AbortSystemShutdown: 取消系统关机操作InitiateSystemShutdown: 初始化系统关机ExitWindowsEx: 以特定方式退出 Windows
这些函数特别适合用于开发系统管理工具。例如,你可以编写一个 Python 脚本,在特定条件下自动关闭或重启计算机:
python复制import win32api
import win32con
# 强制关闭计算机,不显示警告对话框
win32api.InitiateSystemShutdown(
None, # 本地计算机
"系统将在30秒后关闭", # 显示的消息
30, # 超时时间(秒)
True, # 强制关闭应用程序
False # 不重启
)
注意:使用这些函数需要管理员权限,否则会抛出权限错误。
- 系统信息获取:
GetSystemInfo: 获取系统硬件信息GetVersionEx: 获取操作系统版本GlobalMemoryStatusEx: 获取内存使用情况
这些函数可以帮助你了解系统的硬件配置和运行状态:
python复制import win32api
# 获取系统信息
system_info = win32api.GetSystemInfo()
print(f"处理器架构: {system_info['wProcessorArchitecture']}")
print(f"处理器数量: {system_info['dwNumberOfProcessors']}")
# 获取内存状态
mem_status = win32api.GlobalMemoryStatusEx()
print(f"总物理内存: {mem_status['ullTotalPhys']/1024/1024:.2f} MB")
print(f"可用物理内存: {mem_status['ullAvailPhys']/1024/1024:.2f} MB")
2.2 文件与目录操作
Windows API 提供了比 Python 标准库更底层的文件操作功能:
- 基本文件操作:
CopyFile: 复制文件DeleteFile: 删除文件MoveFile/MoveFileEx: 移动或重命名文件
这些函数比 Python 的 shutil 模块提供了更多的控制选项:
python复制import win32api
# 复制文件,如果目标文件已存在则失败
win32api.CopyFile("source.txt", "destination.txt", False)
# 移动文件,允许延迟操作(下次系统启动时执行)
win32api.MoveFileEx("old.txt", "new.txt", win32con.MOVEFILE_DELAY_UNTIL_REBOOT)
- 文件属性和版本信息:
GetFileAttributes: 获取文件属性GetFileVersionInfo: 获取文件的版本信息
获取文件的详细版本信息特别适合软件安装和更新场景:
python复制import win32api
# 获取文件版本信息
info = win32api.GetFileVersionInfo("notepad.exe", "\\")
print(f"文件版本: {info['FileVersionMS'] >> 16}.{info['FileVersionMS'] & 0xFFFF}")
print(f"产品版本: {info['ProductVersionMS'] >> 16}.{info['ProductVersionMS'] & 0xFFFF}")
2.3 注册表操作
Windows 注册表是系统的核心配置数据库,pywin32 提供了完整的注册表操作 API:
- 注册表键操作:
RegCreateKey/RegCreateKeyEx: 创建注册表键RegOpenKey/RegOpenKeyEx: 打开注册表键RegDeleteKey/RegDeleteKeyEx: 删除注册表键
python复制import win32api
import win32con
# 打开或创建注册表键
key = win32api.RegCreateKey(
win32con.HKEY_CURRENT_USER,
"Software\\MyApp"
)
# 设置注册表值
win32api.RegSetValueEx(
key,
"Setting1",
0,
win32con.REG_SZ,
"Value1"
)
# 读取注册表值
value, type = win32api.RegQueryValueEx(key, "Setting1")
print(f"读取到的值: {value}")
# 关闭键
win32api.RegCloseKey(key)
注意:修改注册表可能会影响系统稳定性
