# Process Handle Viewer **Repository Path**: cutecuteyu/process-handle-viewer ## Basic Information - **Project Name**: Process Handle Viewer - **Description**: 一个类似于 PCHunter 的 Windows 进程句柄查看工具,使用 Win32 API 和 C++ 开发。 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-11 - **Last Updated**: 2026-02-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 进程句柄查看器 (Process Handle Viewer) 一个类似于 PCHunter 的 Windows 进程句柄查看工具,使用 Win32 API 和 C++ 开发。 ## 功能特性 - **进程列表显示**: 显示系统中所有运行中的进程(PID、进程名、路径) - **句柄查看**: 查看选中进程打开的所有内核对象句柄 - **类型分类**: 句柄按类型分组显示(文件、事件、进程、线程等) - **中文界面**: 所有句柄类型名称均为中文显示 - **管理员权限**: 自动检测并要求以管理员身份运行 ## 软件截图 主界面显示进程列表,双击进程或点击"查看句柄"按钮可查看句柄详情。 句柄详情窗口使用树形控件按类型分组显示,如: - 文件 (23个) - 句柄: 0x004C | 访问权限: 0x0012019F - 句柄: 0x0050 | 访问权限: 0x0012019F - 事件 (15个) - ... ## 系统要求 - Windows 7/8/10/11 - 需要管理员权限 - MinGW-w64 编译器(用于编译源代码) ## 快速开始 ### 使用预编译版本 直接双击 `handle_viewer.exe` 运行程序。 **注意**: 程序会弹出 UAC 提示要求管理员权限,请点击"是"。 ### 从源代码编译 #### 环境准备 1. 安装 MinGW-w64 编译器 2. 确保 `g++` 和 `windres` 命令在系统 PATH 中 #### 编译步骤 在项目目录中打开 PowerShell,运行编译脚本: ```powershell .\build.ps1 ``` 编译完成后会生成 `handle_viewer.exe` 文件。 #### 手动编译 如果无法使用 PowerShell 脚本,可以手动编译: ```bash # 步骤1: 编译资源文件 windres resource.rc -o resource.o # 步骤2: 编译主程序 g++ -o handle_viewer.exe main.cpp utils.cpp process_manager.cpp handle_manager.cpp window_manager.cpp resource.o -mwindows -DUNICODE -D_UNICODE -O2 ``` ## 项目结构 ``` NEWTEST/ ├── 源代码文件 (Source Files) │ ├── main.cpp # 程序入口和初始化 │ ├── utils.cpp / utils.h # 工具函数(字体创建、权限检查) │ ├── process_manager.cpp / process_manager.h # 进程管理模块 │ ├── handle_manager.cpp / handle_manager.h # 句柄管理模块 │ └── window_manager.cpp / window_manager.h # 窗口管理模块 │ ├── 公共头文件 │ └── common.h # 类型定义、常量、全局变量声明 │ ├── 资源文件 (Resources) │ ├── app.manifest # UAC管理员权限清单 │ └── resource.rc # 资源定义文件 │ ├── 编译脚本 │ └── build.ps1 # PowerShell编译脚本 │ └── 生成的文件 (Generated) ├── handle_viewer.exe # 主程序 └── resource.o # 编译后的资源 ``` ## 模块说明 ### common.h 公共头文件,包含: - 标准头文件包含 - 库文件自动链接 - NT API 类型定义(`SYSTEM_HANDLE_INFORMATION` 等) - 数据结构定义(`ProcessInfo`、`HandleInfo`) - 全局变量声明 - 控件 ID 定义 ### utils 模块 **功能**: 提供通用工具函数 **主要函数**: - `CreateCustomFont()`: 创建自定义字体(使用微软雅黑) - `IsRunAsAdmin()`: 检查是否以管理员身份运行 ### process_manager 模块 **功能**: 进程相关操作 **主要函数**: - `EnumProcesses()`: 枚举系统中所有进程 - `GetProcessPath()`: 获取进程的可执行文件路径 - `RefreshProcessList()`: 刷新进程列表显示 ### handle_manager 模块 **功能**: 句柄相关操作 **主要函数**: - `InitHandleTypeNames()`: 初始化句柄类型名称映射表(0-99类型) - `GetProcessHandles()`: 获取指定进程的所有句柄 **技术细节**: - 使用 `NtQuerySystemInformation` 系统调用获取句柄信息 - 动态调整缓冲区大小以容纳所有句柄 - 支持 100 种句柄类型的中文名称映射 ### window_manager 模块 **功能**: 窗口管理和 UI 交互 **主要函数**: - `MainWindowProc()`: 主窗口过程函数 - `DetailWindowProc()`: 详情窗口过程函数 - `ShowHandleDetailWindow()`: 显示句柄详情窗口 **UI 控件**: - ListView: 显示进程列表 - TreeView: 按类型分组显示句柄 - Button: 刷新、查看句柄、退出、返回 - Static: 标题和提示文本 ### main 模块 **功能**: 程序入口 **主要流程**: 1. 检查管理员权限 2. 初始化句柄类型名称映射 3. 创建字体资源 4. 注册窗口类 5. 创建主窗口 6. 进入消息循环 7. 清理资源 ## 句柄类型说明 程序支持显示以下类型的句柄(已翻译为中文): ### 基础类型 (0-9) - 目录、符号链接、令牌、进程、线程、作业、调试对象、事件 ### 同步对象 (10-19) - 事件对、互斥体、回调、信号量、定时器、配置文件、键控事件、窗口站、桌面、内存段 ### IO 相关 (20-29) - 注册表键、端口、可等待端口、适配器、控制器、设备、驱动程序、IO完成端口、文件、WMI GUID ### 高级功能 (30-39) - ALPC端口、ETW注册、ETW消费者、过滤器连接端口、过滤器通信端口、PCW对象、电源请求、事务、资源管理器、登记 ### 系统对象 (40-49) - 事务管理器、会话、分区、用户APC保留、IO完成保留、激活对象、回调注册 ### 更多类型 (50-99) - 线程池工作工厂、DMA适配器、原始输入管理器、核心消息、合成对象、显示管理器对象、共享资源、内存分区、进程快照、线程快照、能量追踪器、VM总线通道、VTL分区、信任域等 ## 技术实现 ### 进程枚举 使用 Windows Toolhelp32 API: ```cpp HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); Process32FirstW(hSnapshot, &pe32); // 遍历进程... ``` ### 句柄枚举 使用 NT 原生 API(未文档化): ```cpp NtQuerySystemInformation( SystemHandleInformation, buffer, bufferSize, &bufferSize ); ``` ### 权限检查 使用 Windows 安全 API: ```cpp AllocateAndInitializeSid(&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, ...); CheckTokenMembership(NULL, administratorsGroup, &isAdmin); ``` ## 编译参数说明 | 参数 | 说明 | |------|------| | `-o handle_viewer.exe` | 指定输出文件名 | | `-mwindows` | 创建 Windows GUI 程序(不显示控制台) | | `-DUNICODE -D_UNICODE` | 启用 Unicode 支持 | | `-O2` | 优化级别 2(启用优化) | | `resource.o` | 链接资源文件(包含 UAC 清单) | ## 注意事项 1. **管理员权限**: 程序需要管理员权限才能获取系统句柄信息 2. **UAC 提示**: 首次运行时会弹出 UAC 提示,请点击"是" 3. **系统兼容性**: 支持 Windows 7 及以上版本 4. **杀毒软件**: 某些杀毒软件可能会误报,请添加信任 ## 许可证 本项目仅供学习和研究使用。 ## 更新日志 ### v1.0 - 初始版本发布 - 实现进程列表显示 - 实现句柄查看功能 - 支持 100 种句柄类型中文显示 - 代码模块化重构 --- **作者**: CuetCuteYu&AI Assistant **日期**: 2026-02-11