Archiv verlassen und diese Seite im Standarddesign anzeigen : Anti CLOSE
hi bin neu hier wollt mich ma vorstellen und hier gleich ne frage:
weiß jemand von euch hier wie ich es hinbekomme, dass eins meiner Programmme sich nicht schließen lässt bis eine Bedingung erfüllt ist. Also nich über das x in der leiste, nicht über den taskmanager, und der benutzer nichts machen kann bis er das programm beendet hat??
danke
mfg zao
Chris K.
15.06.2007, 20:43
nach so einer lösung such ich auch schon lange, hab aber nix gefunden.
Wär cool wenn einer weiss wies geht
ertsmal danke, könntest du das vielleicht etwas erklären? und lässt sich das programm dann nicht über ALT+F4 beenden.
danke
zao
Wolfkiller
18.07.2007, 12:03
Bei IBasic kan man ein fenster ohne den [x] button erstellen ( aber mit alt + F4 und über task manager gehts trotzdem =( )
Wenn du das Prog hidden machst, kannst du es nichtmehr sehen (also das Programm führt sich aus ohne geschlossen werden zu können). Die einzige Möglichkeit ist dann den Prozess im TaskManager zu beenden!
da gibt es doch auch noch die möglichkeit dass sich mit dem einen programm 2 prozesse öffnen und die sich gegenseitig überwachen. fällt prozess 1 aus, startet prozess 2 ihn direkt wieder. und natürlich anderstrum auch
genau das nennt man einen watcher. ich habe mittlerweile aber diverse andere möglichkeiten gefunden. Zum Beispiel den prozess protecten , oder taskmanager disablen und das x in der leiste weg machen, dannn geht auch alt F4 nicht mehr...
mfg
zao
es wäre nett würdest du diese problem lösung für die allgemeinheit öffentlich machen um die frage das nächste mal _vllt_ (sufu vorrausgetzt <.<) zu vermeiden =D
Lösung 1. Prozess protecten
das ist der code um einen prozess zu protecten... erklärung bin ich jetzt zu faul
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <sddl.h>
#include <accctrl.h>
#include <stdio.h>
#include <conio.h>
#include <aclapi.h>
BOOL ProtectProcess(HANDLE hProcess);
void main(void)
{
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId());
ProtectProcess(hProc);
printf("SetProcessDacl - Keep a process from being closed by other applications.\nDeveloped by ANUBIS");
while(TRUE)
{
Sleep(100);
}
}
BOOL ProtectProcess(HANDLE hProcess)
{
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = FALSE;
if (!ConvertStringSecurityDescriptorToSecurityDescrip tor("D:P", SDDL_REVISION_1, &(sa.lpSecurityDescriptor), NULL))
return FALSE;
if (!SetKernelObjectSecurity(hProcess, DACL_SECURITY_INFORMATION, sa.lpSecurityDescriptor))
return FALSE;
return TRUE;
}
Lösung 2. Taskmanager disablen
einfach einen registy schlüssel ändern, hier erbarme ich mich für eine erklärung :-)
RegCreateKeyEx (HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Poli cies\\System" , 0 , 0 , REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS , NULL , &hKey, 0 );
BYTE xString[]="2";
RegSetValueEx(hKey,"DisableTaskMgr",0,REG_DWORD,xString,strlen((char *)xString)+1);
in der ersten zeile wird der schlüssel geöffnet, in der zweiten zeile wird der eigentliche wert vereinbart, den der
reg_sz wert später haben soll und in der dritten zeile wird der wert gesetzt.
3. Möglichkeit ein WATCHER
mache ich bald ein tut
... coming soon
mfg
zao
@all
Und ein Ring0-Treiber wäre natürlich auch noch möglich, in dem man alle relevanten Funktionen hookt. :)
f0Gx
Powered by vBulletin® Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.