Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.18;
Скачать: 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 вся ветка

Текущий архив: 2004.07.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.028 c
14-1087459582
blackman
2004-06-17 12:06
2004.07.18
Что за портал дремучих?


4-1085394644
Kullibin
2004-05-24 14:30
2004.07.18
Очистка КЕША


3-1088204723
eLVik
2004-06-26 03:05
2004.07.18
Изменение структуры DBF


3-1088060693
ZrenBy
2004-06-24 11:04
2004.07.18
BDE & Insufficient disk space.


3-1087896834
stas
2004-06-22 13:33
2004.07.18
AdoConnection и процессы на сервере