Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
СатирЪ ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.037 c
14-1088187729
ИМХО
2004-06-25 22:22
2004.07.18
Пару слов о Макинтоше


3-1087544030
denis24
2004-06-18 11:33
2004.07.18
Как при создании запросом таблицы сделать поле типа Date?


1-1088671876
a123
2004-07-01 12:51
2004.07.18
свой шрифт в программе


3-1087770767
Stalker
2004-06-21 02:32
2004.07.18
InterBase, даты....


3-1087899750
Прогер
2004-06-22 14:22
2004.07.18
FireBird - dbExpress: ошибка при вызове RefreshRecord, FetchBlobs





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский