Vérifier la variable d’environnement dans un autre processus?

Sous Windows, existe-t-il un moyen de vérifier l’existence d’une variable d’environnement pour un autre processus? Juste besoin de vérifier l’existence, pas nécessairement obtenir de la valeur.

Je dois le faire à partir de code.

Si vous connaissez l’adresse virtuelle à laquelle l’environnement est stocké, vous pouvez utiliser OpenProcess et ReadProcessMemory pour lire l’environnement à partir de l’autre processus. Cependant, pour trouver l’adresse virtuelle, vous devez vous débrouiller dans le bloc d’informations sur les threads de l’un des threads du processus.

Pour obtenir cela, vous devez appeler GetThreadContext() après avoir appelé SuspendThread() . Mais pour les appeler, vous avez besoin d’un handle de thread, que vous pouvez obtenir en appelant CreateToolhelp32Snapshot avec l’indicateur TH32CS_SNAPTHREAD pour créer un instantané du processus, Thread32First pour obtenir l’ID de thread du premier thread du processus et OpenThread une poignée au fil.

Avec un utilitaire:

Vous pouvez utiliser Process Explorer .

Faites un clic droit sur le processus, allez à Propriétés … et il y a un onglet Environnement qui répertorie les variables d’environnement pour ce processus.

Avec code:

Il ne semble pas y avoir d’appel de l’API Win32 pour le faire directement, mais apparemment, vous GetProcessSsortingngs les résultats de GetProcessSsortingngs pour accéder à ces informations. Cet article CodeProject contient du code pour vous aider à démarrer.