以下のコードを使用して、ユーザーがタスク マネージャーからプログラムを強制終了できないようにします (どこかで見つけました)。
function PreventProcessKill: Integer;
var
hProcess:Thandle;
EmptyDacl: TACL ;
pEmptyDacl: PACL ;
dwErr : DWORD ;
begin
hProcess := GetCurrentProcess();
ZeroMemory(@EmptyDacl, SizeOF(tacl));
pEmptyDacl := @EmptyDacl;
if (not InitializeAcl(EmptyDacl, sizeof(tACL), 2)) then dwErr := GetLastError()
else dwErr := SetSecurityInfo(hProcess, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, nil, nil,
@EmptyDacl, nil);
Result:= dwErr;
end;
それはうまく機能しますが、私のプログラムのある時点で、効果を元に戻し、タスクマネージャーから閉じることができるようにする必要があります. 何か案は?