给定进程ID,查找环境变量

时间:2014-10-08 19:23:35

标签: c++ windows variables process environment

我需要能够在Windows中读取另一个正在运行的进程的环境变量。我写的代码要求我在运行它的代码之前阅读它们。

假设有两个应用程序。我首先运行应用程序#1。一旦我运行应用程序#2,应用程序#1将首先读取第二个应用程序的环境变量(只读它们),然后让第二个应用程序运行它的代码。

注意:
 1.应用程序#1不为应用程序#2调用CreateProcess  2.应用程序#2可以是用户在应用程序#1中指定的任何应用程序  3.应用程序#2可以通过桌面上的快捷方式,通过其他应用程序和发射器启动  4.应用程序#1可以使用PsSetLoadImageNotifyRoutine来获取FullImageName,ProcessID,ImageInfo。

2 个答案:

答案 0 :(得分:0)

要设置您正在安装的应用程序使用的环境,请使用CreateProcess启动应用程序#2,并使用lpEnvironment参数传入您希望应用程序#2具有的环境变量。

您可以使用GetEnvironmentStrings获取应用程序#1的当前环境。

答案 1 :(得分:0)

如果在驱动程序组件中使用PsSetCreateProcessNotifyRoutineEx,则回调例程会收到指向EPROCESS structure的指针。您可以在此处找到指向环境块的指针:

Process->Peb->ProcessParameters->Environment

(当然这些都是未记录的结构,但我不认为有任何支持的方式可以做你要求的。)