检查另一个进程中的环境变量?
答
如果您知道存储环境的虚拟地址,则可以使用OpenProcess
和ReadProcessMemory
来读取其他进程以外的环境。但是,要查找虚拟地址,您需要在其中一个进程的线程的Thread Information Block四处寻找。
为了达到这个目的,您需要致电SuspendThread()
后致电GetThreadContext()
。但为了调用这些线程,您需要一个线程句柄,您可以通过调用CreateToolhelp32Snapshot
和TH32CS_SNAPTHREAD
标志来创建进程的快照,Thread32First
以获取进程中第一个线程的线程ID,并获得OpenThread
线程的句柄。
答
使用工具:
您可以使用Process Explorer。
右键单击该进程,去属性...并且有一个环境选项卡,其中列出了该进程的环境变量。
随着代码:
似乎没有成为一个Win32 API调用直接做到这一点,但显然你摆弄的GetProcessStrings
结果以访问这些信息。 This CodeProject article有一些代码让你开始。
+0
谢谢,但应该澄清寻找一种方法来做到这一点从代码... – jalex 2009-07-29 20:11:20
+1伟大的答案。你仍然需要仔细研究一下以找到线程上下文结构的定义。新台币DDK和葡萄酒是这种事情的好地方。看起来也许这是从结构开始的第8个指针? – 2009-07-30 00:30:46