Вниз
Скачать: CL | DM;

сабж   Найти похожие ветки 

← →
СатирЪ ©   (2004-06-24 19:44) [0]

как в винде узнать значение переменных окружения уже запущенного процесса?


← →
Игорь Шевченко ©   (2004-06-24 21:32) [1]

В NT/Win2k/WinXP - через PEB, например.
PEB можно получить через NtQueryInformationProcess(...ProcessBasicInformation....) или по фиксированному адресу.

Пример работы с PEB есть в http://www.schevchenko.net.ru/SRC/EnumFunctions_60.zip


← →
СатирЪ ©   (2004-06-25 13:41) [2]


2Игорь Шевченко ©   (24.06.04 21:32) [1]

Благодарю.
PEB - Process Environment Block?


← →
СатирЪ ©   (2004-06-25 16:56) [3]

type
 TNtQueryProcessFunction =
   function (ProcessID : Cardinal; ProcessClass : Integer;
             Buffer : Pointer; BufferSize : Cardinal;
             PReturnLength : PDWORD) : Integer; stdcall;

funciton GetProcessEnvironmentVariables:boolean;
var   func : TNtQueryProcessFunction;
begin
 Result:=False;

 @func := GetProcAddress (GetModuleHandle ("ntdll.dll"),
                            "NtQueryInformationProcess");

 if Assigned(func) AND (func (применить к чему-то)) then
 begin
   //
 end;
end;

а как конкретно можно получить этот PEB?


← →
СатирЪ ©   (2004-06-25 17:13) [4]

type
 TPEB = packed record
   InheritedAddressSpace : UChar;
   ReadImageFileExecOptions : UChar;
   BeingDebugged    : UChar;
   SpareBool        : UChar;
   Mutant           : Ptr32;
   ImageBaseAddress : Ptr32;
   Ldr              : Ptr32; { _PEB_LDR_DATA }
   ProcessParameters : PRTL_USER_PROCESS_PARAMETERS { _RTL_USER_PROCESS_PARAMETERS };
   SubSystemData    : Ptr32;
   ProcessHeap      : Ptr32;
   { остальные данные упущены }
 end;

 PPEB = ^TPEB;

if NOT ReadProcessMemory(AProcessHandle,@PPEB(PEBAddress)^.ProcessParameters,                      @ATargetProcessParametersPointer, SizeOf(Ptr32),           AReturned) then RaiseLastWin32Error();

Скажите, пожалуйста, где в этой структуре находятся переменные окружения ?


← →
Игорь Шевченко ©   (2004-06-25 22:52) [5]


> Скажите, пожалуйста, где в этой структуре находятся переменные
> окружения ?



>    ProcessParameters : PRTL_USER_PROCESS_PARAMETERS


В этой структуре есть поле Environment. Оно и указывает на блок переменных окружения.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.025 c
1-1088668047
Галинка
2004-07-01 11:47
2004.07.18
Использование try/exception


14-1088580931
Соловьев
2004-06-30 11:35
2004.07.18
Может и старо:)


14-1088426606
Sodom
2004-06-28 16:43
2004.07.18
Доменная авторизация. Создание своего модуля к apache.


14-1088613697
Amit
2004-06-30 20:41
2004.07.18
Народ кто знает по каким дням у нас праздники?


9-1080912554
Andrey128
2004-04-02 17:29
2004.07.18
directx




   Наверх