"CTL+ALT+DEL" trotz XP blocken



  • Hallo,

    um den Abbruch eines Infoprogramms (Messe) durch die User zu verhindern, habe ich folgenden Code gefunden (s.u.).

    Was sagt Ihr Gurus dazu?

    Grüsse

    Gabriel

    #include <registry.hpp>
    
    void TControlForm::EnableCtrlAltDelete(bool EnableReset) {
            if(!HideTaskBarOnUser) return;
    
            AnsiString sRegPolicies =
    "\Software\Microsoft\Windows\CurrentVersion\Policies";
            std::auto_ptr<TRegistry>Reg( new TRegistry);
            try{
                    Reg->RootKey = HKEY_CURRENT_USER;
                    if
    (Reg->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Sys
    tem", true)) {
    
                            switch(EnableReset) {
                                    case true:
    
    Reg->WriteInteger("DisableTaskMgr",0);
    
    Reg->WriteInteger("DisableLockWorkStation",0);
    
    Reg->WriteInteger("DisableChangePassword",0);
                                            break;
                                    default:
    
    Reg->WriteInteger("DisableTaskMgr",1);
    
    Reg->WriteInteger("DisableLockWorkStation",1);
    
    Reg->WriteInteger("DisableChangePassword",1);
                                            break;
                            }
                            Reg->CloseKey();
                    }
             } catch(Exception &e) {
                         return;
             }
    
             try{
                    Reg->RootKey = HKEY_CURRENT_USER;
                    if
    (Reg->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Exp
    lorer", true)) {
    
                            switch(EnableReset) {
                                    case true:
    
    Reg->WriteInteger("NoChangeStartMenu",0);
                                            Reg->WriteInteger("NoClose",0);
                                            Reg->WriteInteger("NoLogOff",0);
                                            break;
                                    default:
    
    Reg->WriteInteger("NoChangeStartMenu",1);
                                            Reg->WriteInteger("NoClose",1);
                                            Reg->WriteInteger("NoLogOff",1);
                                            break;
                            }
                            Reg->CloseKey();
                    }
             } catch(Exception &e) {
                    return;
             }
    
    }
    

    Edit by AJ: Code-Tags eingefügt



  • 1. Code-Tags für die Formatierung verwenden!
    2. Funktioniert es nicht? Oder wo genau liegt das Problem?

    BTW: Wusste gar nicht, dass sich ctrl+alt+del durch einen Softwareeingriff abschalten lässt?!

    MfG SideWinder



  • SideWinder schrieb:

    BTW: Wusste gar nicht, dass sich ctrl+alt+del durch einen Softwareeingriff abschalten lässt?!

    MfG SideWinder

    Das war sogar schon unter DOS möglich ;).



  • Danke erstmal für das Interesse.

    Leider fehlt mir registry.hpp, ich kann es mit Dev-C++ nicht kompilieren.

    Kann mir einer auf die Sprünge helfen?

    B.T.W. Ich dachte auch, daß Win-Systeme >= NT4 diesen Eingriff softwareseitig nicht zulassen.

    Weiss einer hierzu mehr?

    Gabriel



  • AJ schrieb:

    SideWinder schrieb:

    BTW: Wusste gar nicht, dass sich ctrl+alt+del durch einen Softwareeingriff abschalten lässt?!

    MfG SideWinder

    Das war sogar schon unter DOS möglich ;).

    Ach? Das läuft AFAIK im Kernel und das oben ist kein abschalten sondern nur ein deaktivieren von Dialogelementen.



  • Der Dev-C++ zeigt mir da einige Fehler und mit registry.hpp komm ich auch nicht weiter. )-:

    Hat einer Interesse an dem Script und mag es glattbügeln oder Bügelhilfe leisten?

    Gabriel



  • asdrubael schrieb:

    AJ schrieb:

    SideWinder schrieb:

    BTW: Wusste gar nicht, dass sich ctrl+alt+del durch einen Softwareeingriff abschalten lässt?!

    MfG SideWinder

    Das war sogar schon unter DOS möglich ;).

    Ach? Das läuft AFAIK im Kernel und das oben ist kein abschalten sondern nur ein deaktivieren von Dialogelementen.

    Und? Deswegen wurde unter DOS auch ein Interrupt dafür aufgerufen und genau diesen Interrupt konnte man "überschreiben" und somit selbst etwas festlegen, was bei STRG+ALT+ENTF gemacht werden soll (und wenn das einfach nur nichts ist).

    Unter Windows ist das anscheinend nicht anders. Hier wird hald standardmäßig ein Dialog eingeblendet, was man unterbinden kann und wenn dadurch STRG+ALT+ENTF keine Reaktion mehr auslöst, dann würde ich das auch "abgeschaltet" nennen.



  • Bevor hier weitere Spekulationen kommen was da nicht alles mit gemacht wird: Hat jemand den Code oben ausprobiert? IMHO werden da nur Buttons deaktiviert, der Dialog kommt trotzdem.



  • asdrubael schrieb:

    Bevor hier weitere Spekulationen kommen was da nicht alles mit gemacht wird: Hat jemand den Code oben ausprobiert? IMHO werden da nur Buttons deaktiviert, der Dialog kommt trotzdem.

    Ich habe den Code nicht ausprobiert, aber schau mal hier: http://www.delphipraxis.net/topic13485_fuer+delphi+newbies+einsteiger.html

    Wobei das wohl für den Threadersteller wohl noch wichtiger ist 😉 (lasst euch übrigens nicht davon abschrecken, dass da Delphi steht; da werden WinAPI-Funktionen aufgezeigt, die natürlich auch in C(++) gehen).


Anmelden zum Antworten