ort! uda sie wywołać wyjątek krytyczny w win xp to system atomatycznie sam sie zamknie bez zapisywania ustawień i włączonych programów z nie zapisanymi zmianami. A dokładnie chodzi mi o to żeby zamknąć win xp bezwarunkowo! [diabel] jes to<ort> w ogóle </ort>możliwe???
Hm... Tam w XP jest jakiś proces, który jak zabijesz, to komp się wyłączy po 60sec. Tylko nazwy nie pamiętam. Uruchom sobie XP i zabijaj procesy pokolei, jak padnie, to znaczy, że to ten :)
RPC
RPC
[rotfl]
nie żartujecie, po pierwsze rpc to nie jest nazwa procesu, to nazwa usługi. po drugie udostępnia ją serwis svchost, i jak sama nazwa (serwis) wskazuje, nie można go zabić. serwisów nie można zabić.
obawiam się, że w pełni powtarzalne wywołanie wyjątku krytycznego w windowsie nt jest nie do zrealizowania, nt to zbyt dobry system, chociaż to dzieło M$.
poza tym system może pogubić dane z dysku, więc pomysł jak na mój lekko gust debilny.
Cześć! SVCHOST'a nie da się zabić!!?? To co robi MSBLAST?? On zabija wszystkie procesy (chyba 4) svchost odpalone na kompie, przez co pokazuje się ta głupia tabliczka. Nie wiem, jak to jest z programem do napisania, może nie będzie to jakoś najłatwiejsze, ale u mnie na XP wyłączanie SVCHOST'a jest dziecinnie proste...
u mnie tak samo mozna zabic svchost (sprobuj zabic ten o duzym uzyciu procka, to chyba ten)
mozesz tez uzyc: shutdown.exe -f (zamyka wszystko bez ostrzezenia)
a potem: shutdown.exe -s
ps. nie ejstem pewnien ale moze samo -s wystarczy, albo dajesz wszystko naraz: shutdown.exe -f -s
Taką funkcją zamkniesz każdego windowsa (w każdym razie testowałem na 2000 i 2003 server)
function SetPrivilege: boolean;
var
tpPrev, tp: TTokenPrivileges;
hwnd: THandle;
dwRetLen: DWord;
begin
Result := False;
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hwnd);
tp.PrivilegeCount := 1;
if LookupPrivilegeValue(nil, pchar('SeShutdownPrivilege'), tp.Privileges[0].LUID) then
begin
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
dwRetLen := 0;
Result := AdjustTokenPrivileges(hwnd, False, tp, SizeOf(tpPrev), tpPrev, dwRetLen);
end;
CloseHandle(hwnd);
end;
procedure BezwarunkoweZamkniecie;
begin
if SetPrivilege then
ExitWindowsEx(EWX_POWEROFF or EWX_FORCE, 0);
end;
Odpalasz procedurkę BezwarunkoweZamkniecie i zamykasz windows NT (testowałem na 2000). Najlepsze jest to że używając tej funkcji można zamknąć nawet windows 2003 server kiedy jest się użytkownikiem z ograniczonym dostępem:D (czyli nie ma się w ogóle możliwości zamknięcia systemu)
Mam nadzieję że nie zrobiłem żadnych literówek podczas przepisywania funkcji (mam ją wydrukowaną, na kartce:)). Pozdrawiam