Главная страница
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.48 MB
Время: 0.023 c
6-1082732573
Igg
2004-04-23 19:02
2004.07.18
как через ftp получить дату изменения файл


8-1083567552
gagarin
2004-05-03 10:59
2004.07.18
Цвет в 32-битном режиме


1-1089100280
YA
2004-07-06 11:51
2004.07.18
Импортирование библиотеки типов


3-1087728883
korvin
2004-06-20 14:54
2004.07.18
Хранимые процедуры


14-1088351561
DillerXX
2004-06-27 19:52
2004.07.18
Внимание внимание!! Важное заявление :)