Windows 进程溯源师

SKILL开发
开发 未标注权限 许可证不明确
安装这个技能

排查 Windows 上"进程杀了又活""不知道谁启动的进程""父进程是谁"。用纯 ctypes 拿创建时间、父子链、命令行,识别 keep-alive 守护脚本。触发词:这个进程是谁起的、杀了又自动起来、收工前清理进程、不知道哪个窗口是我们的程序。

一句话选型结论

按资料字段整理

Windows 进程溯源师是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类开发 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_58301f3d/windows-process-forensics
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

开发
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_58301f3d仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量7.2 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写代码与改 bug

按需求补代码、定位并修掉报错。

读仓库与生成改动

让模型读懂项目结构,再给出可落地的改动。

跑测试与排查故障

按现象排查问题,补测试用例并复跑。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在开发场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
Windows 进程溯源师当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 ClawHub 市场 877.9 万 OpenClaw 有
Vercel React 最佳实践 浏览器控制 GitHub 仓库 849.1 万 Codex、Claude、Cursor 有
GitHub 代码协作 联网访问 ClawHub 市场 763.3 万 OpenClaw 有
网页设计指南 联网访问 GitHub 仓库 668.6 万 Codex、Claude、Cursor 有
本体论 只读 ClawHub 市场 663.7 万 OpenClaw 有

SKILL.md 全文

7.2 KB
模型实际读到的说明书原文,来自技能仓库

Windows 进程溯源(谁启动的?为什么杀了又活?)

0. 三条铁律(踩过坑,先看这个)

  1. 禁止靠窗口标题推断"是谁启动的"
    tasklist /V 的窗口标题只说明"这个进程显示什么标题",不能说明"谁启动了它"。
    → 真实案例:看到窗口标题是自家程序名,就断定"用户刚刚启动了它",结论完全错误(实际是守护脚本自动重启的,用户什么都没做)。
    → 必须查创建时间。

  2. "杀了又活"先找守护脚本,别硬杀
    Windows 上常见 keep-alive 写法:
    bat :loop "C:\path\to\python.exe" -u script.py >> log.out 2>&1 timeout /t 5 /nobreak >nul goto loop
    → 必须先杀守护脚本的 cmd 窗口,再杀目标进程。顺序反了永远杀不干净(5 秒后又起来)。
    → 识别线索:目标进程的父进程是 cmd.exe,就去翻对应的 .bat 内容。

  3. 强杀(taskkill /F)不会走 try/finally
    进程的清理逻辑(删 pid 文件、还原代理、写退出日志)全被跳过 → 手动清理残留。

1. 一键排查(推荐直接用脚本)

本 skill 附 scripts/proc_info.py,纯 stdlib + ctypes,不需要管理员权限:

# 列出关心的进程:PID / 父链 / 创建时间 / 窗口标题
python scripts/proc_info.py

# 只看某类进程
python scripts/proc_info.py --name python.exe,cmd.exe,node.exe

# 追溯某个 pid 的来源(父链一路到根)
python scripts/proc_info.py --who 11864

输出示例:

python.exe(16944)  [窗口:抖贝控券]  启动=2026-09-11 15:23:05   ← cmd.exe(120) ← explorer.exe(3964)
python.exe(11864)  [窗口:—]          启动=2026-09-12 09:06:38   ← cmd.exe(900) ← explorer.exe(3964)

读法:
- 父链到 explorer.exe = 桌面双击启动(或某个 bat)
- 父链到 cmd.exe = 某个 .bat 启动 → 去看那个 bat 的内容
- 两个进程创建时间相同 = 同一批启动(例如同一个 bat 的连续步骤)
- 创建时间是昨晚/很久以前 = 不是刚刚启动的(别误判成用户操作)

2. 手工查(脚本不够用时)

import ctypes, ctypes.wintypes as w
from datetime import datetime, timezone, timedelta

k = ctypes.windll.kernel32

class FILETIME(ctypes.Structure):
    _fields_ = [('dwLowDateTime', w.DWORD), ('dwHighDateTime', w.DWORD)]

def proc_creation_time(pid):
    """拿进程创建时间(本地时间)。ctypes 实现,无需管理员。"""
    h = k.OpenProcess(0x1000, False, pid)   # PROCESS_QUERY_LIMITED_INFORMATION
    if not h:
        return None
    c, e, kt, u = FILETIME(), FILETIME(), FILETIME(), FILETIME()
    ok = k.GetProcessTimes(h, ctypes.byref(c), ctypes.byref(e),
                           ctypes.byref(kt), ctypes.byref(u))
    k.CloseHandle(h)
    if not ok:
        return None
    v = (c.dwHighDateTime << 32) | c.dwLowDateTime
    dt = datetime(1601, 1, 1) + timedelta(microseconds=v // 10)   # FILETIME 起点
    return dt.replace(tzinfo=timezone.utc).astimezone().replace(tzinfo=None)

def proc_tree():
    """返回 {pid: (ppid, exe_name)},用于追溯父链。"""
    class PE32W(ctypes.Structure):
        _fields_ = [('dwSize', w.DWORD), ('cntUsage', w.DWORD),
                    ('th32ProcessID', w.DWORD),
                    ('th32DefaultHeapID', ctypes.c_void_p),
                    ('th32ModuleID', w.DWORD), ('cntThreads', w.DWORD),
                    ('th32ParentProcessID', w.DWORD),
                    ('pcPriClassBase', ctypes.c_long), ('dwFlags', w.DWORD),
                    ('szExeFile', ctypes.c_wchar * 260)]
    snap = k.CreateToolhelp32Snapshot(0x2, 0)    # TH32CS_SNAPPROCESS
    e = PE32W(); e.dwSize = ctypes.sizeof(PE32W)
    out = {}
    while k.Process32NextW(snap, ctypes.byref(e)):
        out[e.th32ProcessID] = (e.th32ParentProcessID, e.szExeFile)
    k.CloseHandle(snap)
    return out

3. 干净的收工顺序(模板)

# 1) 先查:有没有守护脚本?(看目标进程的父进程是不是 cmd.exe,再读那个 bat)
# 2) 先杀守护脚本(cmd 窗口),连带它的子进程树
taskkill /PID <守护cmd的pid> /T /F
# 3) 再杀目标进程(可能已随树死亡,报"找不到进程"属正常)
taskkill /PID <目标pid> /T /F
# 4) 手动清理残留(强杀不走 finally)
#    - pid 文件、锁文件、代理设置、临时标志文件
# 5) 等 5~10 秒后复查:确认没有"新实例"冒出来

第 5 步不能省 —— 它是验证守护脚本真的死了的唯一手段。顺手写个复查:

import subprocess, time
time.sleep(8)
r = subprocess.run(['tasklist', '/FI', 'IMAGENAME eq python.exe'],
                   capture_output=True, text=True, encoding='mbcs', errors='ignore')
print(r.stdout)   # 确认没有新的目标进程

4. 附带坑

坑 说明
PowerShell 工具输出被吞 本机实测 Get-CimInstance / Format-Table 常常返回空 → 改用 Python ctypes 更可靠
wmic / reg.exe 被黑名单拦 安全策略拦截 → 用 Python (ctypes / winreg) 替代
窗口标题会骗人 自家程序和第三方程序可能同名(如都叫「抖贝控券」)→ 看进程名(python.exe vs 抖贝控券.exe)+ 创建时间
tasklist 编码 加 encoding="mbcs", errors="ignore",否则中文 Windows 上乱码

5. 排查决策树

进程在跑,但"不知道谁起的" / "杀了又活"
│
├─ 查创建时间(proc_creation_time)
│   ├─ 很久以前 → 不是刚启动的,别当成"用户操作"
│   └─ 刚刚 → 继续
│
├─ 查父链(proc_tree)
│   ├─ 父是 explorer.exe → 桌面双击(bat/快捷方式/手工)
│   ├─ 父是 cmd.exe → 去读那个 bat 的内容
│   │   └─ 含 ":loop" + "goto loop" → ★ keep-alive 守护脚本
│   │        → 必须"先杀守护、再杀目标"
│   └─ 父是某编辑器/IDE/终端 → 那边启动的
│
└─ 杀完之后
    └─ 等 8 秒复查 → 又冒出来?守护脚本没杀干净

常见问题

5 问
答案由本站依据条目字段整理
Windows 进程溯源师怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_58301f3d/windows-process-forensics。安装方式为未标注。装完刷新技能列表或重开客户端。

Windows 进程溯源师支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

Windows 进程溯源师权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

Windows 进程溯源师收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

Windows 进程溯源师用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。