¿Comprobar la variable de entorno en otro proceso?

En Windows, ¿hay una manera de verificar la existencia de una variable de entorno para otro proceso? Solo hay que comprobar la existencia, no necesariamente obtener valor.

Necesito hacer esto desde el código.

Si conoce la dirección virtual en la que se almacena el entorno, puede utilizar OpenProcess y ReadProcessMemory para leer el entorno fuera del otro proceso. Sin embargo, para encontrar la dirección virtual, deberá buscar en el Bloque de información de subprocesos de uno de los subprocesos del proceso.

Para obtener eso, deberá llamar a GetThreadContext() después de llamar a SuspendThread() . Pero para llamar a esos, necesita un controlador de hilo, que puede obtener llamando a CreateToolhelp32Snapshot con el indicador TH32CS_SNAPTHREAD para crear una instantánea del proceso, Thread32First para obtener el ID del hilo del primer hilo en el proceso y OpenThread Un mango al hilo.

Con una utilidad:

Puede utilizar Process Explorer .

Haga clic derecho en el proceso, vaya a Propiedades … y hay una pestaña Entorno que enumera las variables de entorno para ese proceso.

Con el código:

No parece haber una llamada a la API de Win32 para hacer esto directamente, pero aparentemente tienes problemas con los resultados de GetProcessStrings para obtener acceso a esta información. Este artículo de CodeProject tiene algo de código para comenzar.