Announcement

Collapse
No announcement yet.

iShellExecuteHook - Beispiel-Prg von A. Kosch .. tut nicht ??

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

  • iShellExecuteHook - Beispiel-Prg von A. Kosch .. tut nicht ??

    Hallo,

    ich hab mal hier im Entwickler-Formum "suchen nach iShellExecuteHook" eingegeben, und hab einiges darüber gefunden. Auch einen Beitrag von Andreas Kosch. Hier war ein Quelltext zu finden, welcher verhindert
    das Programm SOL.EXE aufzurufen. Ein sogenannter COM Server wurde
    installiert. .. Funkt aber nich so richtig. Die Registry-Einträge
    wurden zwar geschrieben, aber auch nach einem Neustart nicht aktiv.
    Woran könntes dies liegen.. ???

    Ich möchte den Start einer Anwendung verhindern, wie z.B.: SOL.EXE..
    Das Beispiel ist ja gut, aber tut irgendwie nicht .. Mach ich irgendwas
    falsch ??

    Gruß
    Steffen Rieger

  • #2
    Hallo,

    was passiert, wenn die Anwendung (SOL.EXE) über <i>Start | Ausführen</i> aufgerufen wird

    Comment


    • #3
      Nichts ! Sol.exe startet wie gewohnt. Muß beim Installieren des
      Com-Servers was spezielles beachtet werden ?

      Eigentlich muß nur die Unit eingebunden werden, oder ??

      Gruß Steffe

      Comment


      • #4
        Hallo,

        mein Beispiel hat mit <i>TShellExecuteHookFactory</i> eine eigene <b>Class Factory</b> verwendet, um beim Registrieren dieses COM-Objekts im System die von Windows erwarteten Registry-Einträge zu setzen:
        <pre>
        { TShellExecuteHookFactory }

        procedure TShellExecuteHookFactory.UpdateRegistry(Register: Boolean);
        resourcestring
        ShellExecuteHooksKey = 'SOFTWARE\Microsoft\Windows\CurrentVersion\' +
        'Explorer\ShellExecuteHooks';
        var
        aTReg : TRegistry;
        begin
        inherited;
        if Register then
        begin
        aTReg := TRegistry.Create;
        try
        aTReg.RootKey := HKEY_LOCAL_MACHINE;
        aTReg.OpenKey(ShellExecuteHooksKey, True);
        aTReg.WriteString(GUIDToString(Class_TShellExecute Hook), Description);
        finally
        aTReg.Free;
        end;
        end
        else
        begin
        aTReg := TRegistry.Create;
        try
        aTReg.RootKey := HKEY_LOCAL_MACHINE;
        aTReg.OpenKey(ShellExecuteHooksKey, True);
        aTReg.DeleteValue(GUIDToString(Class_TShellExecute Hook));
        finally
        aTReg.Free;
        end;
        end;
        end;
        </pre>
        Wenn die CLSID des COM-Objekts nicht im Zweig <b>ShellExecuteHooks</b> eingetragen ist, ignoriert Windows dieses Objekt

        Comment

        Working...
        X