这听起来不是一个好主意,除了可能是一个笑话程序。它会非常缓慢,并且会被归类为恶意且无用。然而,这至少有一些教育价值。
只要您以管理员身份运行,就应该可以。请注意,即使管理员也无法对某些系统进程执行此操作。
首先,您需要获得 SeDebugPrivilege。请参阅此示例。
然后,您需要枚举所有进程。请参阅此示例:
http: //msdn.microsoft.com/en-us/library/windows/desktop/ms682623 (v=vs.85).aspx
然后,使用 PROCESS_ALL_ACCESS 在每个 PID 上使用Open Process 。如果你得到 ERROR_ACCESS_DENIED,你可能没有正确获得 SeDebugPrivilege。
使用ReadProcessMemory读取进程的内存并将其存储在缓冲区中。某些进程将具有大量内存,您可能需要将其分成块。您还需要在错误处理方面保持稳健。
然后,扫描缓冲区以查找您想要的字符串,如果找到它,请执行一些操作。
您可能每 10 秒左右重复上述所有操作。
注意:在 C# 中,您需要对这些 API 进行 p-invoke。C# 不是处理这类废话的最佳语言,但有可能……不过,我推荐使用本机代码。