![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как завершить системныЙ процесс? [D6, WinXP]
Handle © (2006-03-03 18:31:00)Как завершить системныЙ процесс?
Например получаю я список процессов.
var
hSnapShot: THandle;
uProcess: PROCESSENTRY32;
r: longbool;
begin
hSnapShot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
uProcess.dwSize := Sizeof(uProcess);
if(hSnapShot<>0)then
begin
r:=Process32First(hSnapShot, uProcess);
while r <> false do
begin
ListBox1.Items.Add(uProcess.szExeFile);
r:=Process32Next(hSnapShot, uProcess);
end;
CloseHandle(hSnapShot);
end;
Обычные процессы функция TerminateProcess убивает, а системные не может.
Как же завершить например winlogon.exe.
Заранее благодарен.Спасибо.
kaZaNoVa (2006-03-05 16:51:00) [1]Saygak © (05.03.06 16:45) [5]
uses
Tlhelp32;
Handle (2006-03-05 16:50:00) [2]
> Saygak © (05.03.06 16:45) [5]
> а где описаны используемые функции
PsAPI, Shellapi , ToolWin, TLHelp32
Saygak (2006-03-05 16:45:00) [3]А можно попутный вопрос?
var
hSnapShot: THandle;
uProcess: PROCESSENTRY32;
r: longbool;
begin
hSnapShot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
uProcess.dwSize := Sizeof(uProcess);
if(hSnapShot<>0)then
begin
r:=Process32First(hSnapShot, uProcess);
while r <> false do
begin
ListBox1.Items.Add(uProcess.szExeFile);
r:=Process32Next(hSnapShot, uProcess);
end;
CloseHandle(hSnapShot);
end;
а где описаны используемые функции
Handle (2006-03-05 11:50:00) [4]
> kaZaNoVa © (05.03.06 09:53) [3]
Спасибо буду разбираться.
kaZaNoVa (2006-03-05 09:53:00) [5]и про права админа не забудь)))
kaZaNoVa (2006-03-05 09:43:00) [6]
function SetDebugPriv: Boolean;
var
Token: THandle;
tkp: TTokenPrivileges;
begin
Result := false;
if OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token) then
begin
if LookupPrivilegeValue(nil, PChar('SeDebugPrivilege'), tkp.Privileges[0].Luid) then
begin
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
Result := AdjustTokenPrivileges(Token, false, tkp, 0, PTokenPrivileges(nil)^, PDWord(nil)^);
end;
end;
end;
kaZaNoVa (2006-03-05 08:56:00) [7]Handle (03.03.06 19:03)
Как же завершить например winlogon.exe.
система рухнет. сразу.
- привелегии получи и всё .. если надо - есть пример ..