Gina.dll ...



  • ich will die tastenkombination Alt+Strg+Entfern unterdrücken. aber nur wenn ein bestimmtes pogramm geöffnet ist.
    ich überprüfe mit FindWindow() ob dieses programm offen ist. er gibt mir aber immer NULL zurück. ich habe zum testen eine messagebox eingefügt, kann mir also sicher sein das die funktion aufgerufen wird wenn die kombination gedrückt wird.

    folgenden code habe ich bis jetzt genutzt:

    int WINAPI WlxLoggedOnSAS(PVOID pWlxContext, DWORD dwSasType, PVOID pReserved)
    {
    	if ((dwSasType == WLX_SAS_TYPE_CTRL_ALT_DEL) && (FindWindow(0, "TITEL") != NULL))
    		return (WLX_SAS_ACTION_NONE);
    	else
    		return (GWlxLoggedOnSAS(pWlxContext, dwSasType, pReserved));
    }
    

    (habe anstatt dem titel auch schon den klassennamen benutzt)



  • getlasterror() ?
    findest er das fenster in einem test programm?



  • gute idee, aber ...
    erhalte folgende fehlermeldungen nach mehreren versuchen:

    - ERROR_IO_PENDING
    - ERROR_INVALID_PARAMETER

    sowohl mit gestartetem programm als auch wenn es nicht geöfnet ist.



  • was sagt den spy zu deinem bestimmten programm?

    kleines testprog geht auch nicht?

    int main()
    {
      if(FindWindow(0, "TITEL") == NULL)
        std::cout << "nicht gefunden" << std::endl;
      else
        std::cout << "gefunden" << std::endl;
    
      return 0;
    }
    


  • der spy sagt mir den fenstertitel an, nach dem ich gesucht hatte.

    dein testprogramm sagt auch das mein programm gefunden wird.
    habe die DLL noch mal genau angeguckt: mache da genau so wie im testprogramm aber ohne erfolg !?



  • Mal eine dumme Frage: In was für einem Programm benutzt du die DLL? Läuft dieses Programm überhaupt auf dem gleichen Desktop in der gleichen WinSta wie das Programm, dessen Fenster du suchst?



  • du hast wahrscheinlich die frage nicht richtig verstanden 😉

    ich ersetze die ursprüngliche gina.dll von windows durch meine dll. das system ruft die funktion WlxLoggedOnSAS() auf wenn die tasten strg+alt+entfern gedrückt werden. genau dann überprüfe ich: ist ein programm auf dem rechner gestartet mit dem titel "TITEL" zum beispiel. wenn es gestartet ist, sollen die tasten blockiert werden, wenn es nicht läuft sollen sie weitergereicht werden.

    genauer gehts nicht ;):D



  • das haut so nicht hin. winlogon (und die gina.dll) laufen in einem anderen kontext (desktop genannt) als die benutzeranwendungen d.h. FindWindow() wird nicht klappen. du solltest irgendeinen ipc-mechanismus oder andere tricks verwenden, um auf die anwendung zuzugreifen.



  • Vielleicht hilft dir der Link hier weiter?
    Ist ne Beschreibung der Arbeitsweise der Gina Dll.
    http://msdn.microsoft.com/msdnmag/issues/05/05/SecurityBriefs/default.aspx

    MfG Spacelord



  • Red Skall schrieb:

    du hast wahrscheinlich die frage nicht richtig verstanden 😉

    Doch habe ich. Und meine Glaskugel hat mir gesagt, was da schief läuft, weil aus deinem ersten Posting wurde nicht klar, dass du die Gina.dll durch eine eigene ersetzt.

    ich ersetze die ursprüngliche gina.dll von windows durch meine dll.

    Und genau das ist das Problem, was ich dir oben schon versucht habe klar zu machen, warum das so nicht geht.



  • @Luckie: sorry, war ja auch nicht böse gemeint 😉

    @Spacelord: danke, der text ist echt gut. aber habe das problem inzwischen schon gelöst (das prog erstellt ne datei und die gina guckt ob sieexistiert).


Anmelden zum Antworten