Also ich glaub es würde auch einfacher ausreichen.
Programm im OnCloseQuery gegen versehendliches Beenden schützen.
z.B.:
Delphi-Quellcode:
Procedure TForm1.FormCloseQuery(Sender: TObject;
Var CanClose: Boolean);
Begin
CanClose := MessageBox(
Handle, '
Soll das Programm wirklich beendet werden?',
'
Mein Programm', MB_OKCANCEL
or MB_ICONQUESTION) = ID_OK;
End;
Und dann in 'ner geschützten Datei, oder an einem geschützten/verstecktem Ort alles Mitloggen.
- Programm gestartet
- Programm (vom User) beendet
- ...
Wenn der Rechner abstürtzt und auch bei Stromausfall fehlt dann ja der Logeintrag für's "Programm beendet" und somit kann er dann eine Ausrede wie "Programm/PC" ist abgestürtzt nicht verwenden, wenn er doch das Programm (ordnungsgeäß) beendet hatte, also wenn ein Eintrag "Programm beendet" im Log zu finden ist.
Falls du den TaskManager dem User nicht verbieten willst (eigentlich braucht man doch für ein einziges Programm den doch eh nicht? ... notfalls halt Reset drücken), dann könnte man doch auch in die Logtadei zumindestens mit eintragen ob der Taskmanager gestartet wurde?
also Log: .... TaskManager gestartet, (rechner/Programm verreckt), Programm gestartet ...
würde dann auf ein Abschießen des Programms mit dem Taskmanager hinweisen.
[add]
Ansonsten könnte man ja nur die Oberfläche als (normales) Programm laufen lassen.
Das Aufnehmen und Speichern der Messwerte könnte sich ja in einem Service unterbringen lassen.
Auch das Programm in einem anderem Kontext laufen zu lassen wäre eine Mölichkeit.
User ist als z.B. Gast angemeldet
und Programm läuft im Adminkontext
dann heben deine Mitarbeiter auch keine Möglichkeit das (Admin)Programmmit ihrem (Gast)TaskManager zu beenden