检查另一个进程中的环境变量?

在Windows中,有没有办法检查另一个进程是否存在环境变量? 只需要检查存在,不一定得到价值。

我需要从代码中做到这一点。

如果您知道存储环境的虚拟地址,则可以使用OpenProcessReadProcessMemory从其他进程中读取环境。 但是,要查找虚拟地址,您需要在其中一个进程’线程的线程信息块中查找。

为此,您需要在调用SuspendThread()之后调用GetThreadContext() SuspendThread() 。 但是为了调用它们,你需要一个线程句柄,你可以通过调用带有TH32CS_SNAPTHREAD标志的CreateToolhelp32Snapshot来创建进程的快照, Thread32First来获取进程中第一个线程的线程ID,以及OpenThread来获取线程的句柄。

使用实用程序:

您可以使用Process Explorer 。

右键单击该进程,转到“ 属性…”,然后有一个“ 环境”选项卡,其中列出了该进程的环境变量。

使用代码:

似乎没有Win32 API调用直接执行此操作,但显然您可以使用GetProcessStrings的结果来获取对此信息的访问权限。 此CodeProject文章有一些代码可以帮助您入门。