· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Завершение процесса и кое-что ещё...

. 1 . 2 . 3 . >>

Посл.отвђт Сообщенiе


Дата: Окт 22, 2003 16:25:28

Здравствуйте!
У меня возник вопрос.
Как под Windows 2000 завершить
процесс, зная только его имя?
(Например calc.exe).
И как быстро узнать к какой группе
пользователей относится USER и если
он не администратор, не запускать
приложение?
Помогите с исходником.
Заранее спасибо!
1990


Дата: Окт 22, 2003 19:26:35 · Поправил: prog

Узнать админ или нет:

; Open a handle to the SC Manager database
invoke OpenSCManager, NULL, NULL, SC_MANAGER_ALL_ACCESS
or eax,eax
jnz admin

;... не администратор

jmp short next

admin:

;... у текущего пользователя права администратора

invoke CloseServiceHandle, eax

next:
...


Дата: Окт 22, 2003 19:37:44

Спасибо! А как быть с процессом?


Дата: Окт 22, 2003 22:23:26

man ToolHelp


Дата: Окт 22, 2003 22:34:20

Но что сие значит?


Дата: Окт 22, 2003 23:05:32

Значит используй функции ToolHelp, для поиска и прибития процесса ;-),
но под NT/2k/XP это не лучший вариант :-)


Дата: Окт 22, 2003 23:34:01

1990

Ты rst не слушай. Он тебе насоветует :) Asterix верно сказал - ToolHelp - херня. Бери лучше ублюдочный PSAPI, который тоже херня. Лучше всего - Native API. Функции описаны у Гарри Неббета в его Native API Reference.


Дата: Окт 23, 2003 00:00:27

Володя, мой выбор тулхелпа вполне обоснован.
Asterix :
1) тулхелп есть везде (psapi.dll нет на winnt4 к примеру), а тулхелп - это кусок kernel32.dll
2) тулхелп если не ошибаюсь - один хрен сводится к ZwQuerySystemInformation если не ошибаюсь.


Дата: Окт 23, 2003 00:05:49

Не ошибаешься. Только, к примеру, OllyDbg с собой таскает PSAPI. А по большому счету, если хорошенько почитать Шрайбера, становится понятно, что и PSAPI не более, чем ублюдочный (в прямом смысле слова!) набор кастратов вокруг NtQuery. В этом исключительном случае лучше использовать Native API напрямую. Это не всегда так, это не всегда верно, но NtQuery лучше и очень мала вероятность, что прототип изменится!


Дата: Окт 23, 2003 00:14:05

rst

С ToolHelp не всё так просто, код написанный под 98-ю винду не хочет
работать в 2k/XP.


Дата: Окт 23, 2003 00:18:42

Asterix
Да ладно...
void KillBrowsers ()
{
	PROCESSENTRY32 m_entry;
	HANDLE hsnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	if (hsnap==INVALID_HANDLE_VALUE)
		return;
	
	m_entry.dwSize = sizeof(PROCESSENTRY32);
	
	Process32First(hsnap, &m_entry);
	char * szProc=(char *) my_malloc(1024);
	my_strncpy(szProc,m_entry.szExeFile,my_strlen(m_entry.szExeFile));
	my_str_tolower(szProc);
	if (!my_strcmp("iexplore.exe",szProc) || !my_strcmp("opera.exe",szProc) || !my_strcmp("netscape.exe",szProc) || !my_strcmp ("mozilla.exe",szProc))
	{ 
	
		HANDLE hProc = OpenProcess(PROCESS_TERMINATE, NULL, m_entry.th32ProcessID);
		if (hProc)
		{
			TerminateProcess(hProc, 0);
			CloseHandle(hProc);
		}
	}
	my_free (szProc);
	while(Process32Next(hsnap, &m_entry))
	{	
		szProc=(char*)my_malloc(1024);
		my_strncpy(szProc,m_entry.szExeFile,my_strlen(m_entry.szExeFile));
		my_str_tolower(szProc);
		if (!my_strcmp("iexplore.exe",szProc) || !my_strcmp("opera.exe",szProc) || !my_strcmp("netscape.exe",szProc) || !my_strcmp ("mozilla.exe",szProc))
		{
			HANDLE hProc = OpenProcess(PROCESS_TERMINATE, NULL, m_entry.th32ProcessID);
			if (hProc)
			{
				TerminateProcess(hProc, 0);
				CloseHandle(hProc);
			}
		}
		my_free(szProc);
	}
	CloseHandle(hsnap);
	return;
}

этот код проверен на нескольких тысячах машин... где и 9х и ХР. А насчет что и где работает - это все в МСДН написано -)


Дата: Окт 23, 2003 00:23:21

rst

Ой, мамочка. Как много всего написано-то. Почитай главу "Дампер процессов" в релизе второй части о пакерах. Там кода поменьше-то будет ;)


Дата: Окт 23, 2003 00:27:43

volodya
Нафига? Я это можно сказать вообще не писал - просто выдрал кусок из MSDN.
А по поводу много или не много - прожка, в которой это применяется на данный момент является самой маленькой в мире прогой своего класса.


Дата: Окт 23, 2003 00:34:05

rst

Ну и прицепил бы сюда эту прогу, а я проверю под разными виндами ;-)


Дата: Окт 23, 2003 00:50:48

Asterix - нахрена? я итак оттестил её.. Не зря SQA Engineer отработал три года в Аэлите -)

. 1 . 2 . 3 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.058