Announcement

Collapse
No announcement yet.

Programm am starten und Datei vor dem Löschen hindern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Programm am starten und Datei vor dem Löschen hindern

    Wie kann ich ein Programm hindern zu starten.
    Wenn zum Beispiel im Explorer Notepad.exe gestartet wird, soll mein Programm diesen Vorgang verhindern können.
    Das gleiche sollte für den Löschvorgang geschehen, dass heißt wenn jemand versucht eine Datei oder einen Ordner zu löschen soll zum Beispiel ein „Zugriff verweigert“-Dialog erscheinen.

  • #2
    Hört sich sehr interessant an.
    Darüber würde ich auch gerne mehr wissen. :-

    Comment


    • #3
      Hallo,

      für die zweite Aufgabe liefert Borland im Verzeichnis <b>Demos\ActiveX\ShellExt</b> bereits das Beispielprojekt copyhook.dpr mit aus.

      Nach dem gleichen Prinzip wird die erste Aufgabe gelöst - indem man ein COM-Objekt schreibt und im System registriert, dass über das von Win32 vorgefinierte Interface <b>IShellExecuteHook</b> sein Veto beim Starten von "unerwünschten" Anwendungen einlegen kann. Das folgende Beispiel verhindert das Starten des Windows-Spiels <i>Solitaire</i>:
      <pre>
      function TShellExecuteHook.Execute(var ShellExecuteInfo: TShellExecuteInfo): HResult;
      var
      sFile : String;
      begin
      // Default: Windows darf Programm starten
      Result := S_FALSE;
      with ShellExecuteInfo do
      begin
      sFile := UpperCase(ExtractFileName(lpFile));
      if Pos('SOL', sFile) = 1 then
      begin
      // Programm soll nicht gestartet werden -> S_OK zurückliefern
      Result := S_OK;
      // Keine Windows-Fehlermeldung anzeigen -> Wert >= 32 zurückliefern
      hInstApp := 32;
      MessageBox(Wnd, 'Nicht schon wieder Solitaire!',
      'Das störrische Windows 2000',
      MB_OK or MB_ICONINFORMATION);
      end;
      end;
      end;
      </pre>
      P.S. Unter Windows NT oder Windows 2000 kann man diese Sachen besser über die Rechte-Vergabe regeln, wenn NTFS-Partitionen verwendet werden.
      &#10

      Comment

      Working...
      X