Проверить на переменную среды в другом процессе?

Я использую ссылки, если мне не нужен ни один из них:

  • Нулевые указатели могут использоваться в качестве значения сигнальной метки, часто дешевый способ избежать перегрузки функции или использования bool.

  • можно сделать арифметику на указателе. Например, p += offset;

6
задан Sean Bright 29 July 2009 в 20:34
поделиться

2 ответа

Если вам известен виртуальный адрес, по которому хранится среда, вы можете использовать OpenProcess и ReadProcessMemory для чтения среды из другого процесса. . Однако, чтобы найти виртуальный адрес, вам нужно порыться в блоке информации о потоке одного из потоков процесса.

Чтобы получить это, вам нужно позвонить по GetThreadContext () после вызова SuspendThread () . Но для их вызова вам нужен дескриптор потока, который можно получить, вызвав CreateToolhelp32Snapshot с флагом TH32CS_SNAPTHREAD для создания снимка процесса, Thread32First ], чтобы получить идентификатор первого потока в процессе, и OpenThread , чтобы получить дескриптор потока.

8
ответ дан 10 December 2019 в 02:51
поделиться

С помощью утилиты:

Вы можете использовать Process Explorer .

Щелкните процесс правой кнопкой мыши, перейдите в Свойства ... и есть вкладка Environment , на которой перечислены переменные среды для этого процесса.

С кодом:

Похоже, что нет вызова Win32 API, чтобы сделать это напрямую, но, очевидно, вы получаете возиться с результатами GetProcessStrings , чтобы получить доступ к этой информации. В этой статье CodeProject есть код, который поможет вам начать работу.

1
ответ дан 10 December 2019 в 02:51
поделиться