我需要能够在Windows中读取另一个正在运行的进程的环境变量。我写的代码要求我在运行它的代码之前阅读它们。
假设有两个应用程序。我首先运行应用程序#1。一旦我运行应用程序#2,应用程序#1将首先读取第二个应用程序的环境变量(只读它们),然后让第二个应用程序运行它的代码。
注意:
1.应用程序#1不为应用程序#2调用CreateProcess
2.应用程序#2可以是用户在应用程序#1中指定的任何应用程序
3.应用程序#2可以通过桌面上的快捷方式,通过其他应用程序和发射器启动
4.应用程序#1可以使用PsSetLoadImageNotifyRoutine来获取FullImageName,ProcessID,ImageInfo。
答案 0 :(得分:0)
要设置您正在安装的应用程序使用的环境,请使用CreateProcess启动应用程序#2,并使用lpEnvironment
参数传入您希望应用程序#2具有的环境变量。
您可以使用GetEnvironmentStrings获取应用程序#1的当前环境。
答案 1 :(得分:0)
如果在驱动程序组件中使用PsSetCreateProcessNotifyRoutineEx
,则回调例程会收到指向EPROCESS structure的指针。您可以在此处找到指向环境块的指针:
Process->Peb->ProcessParameters->Environment
(当然这些都是未记录的结构,但我不认为有任何支持的方式可以做你要求的。)