
Das Ziel hier ist, eine einfache .NET-Anwendung zu starten, die ich geschrieben habe und die beim Anmelden einige Umgebungsvariablen (Zeit, Benutzername, Computername usw.) erfasst. Diese .NET-Anwendung abonniert das Windows-Ereignis „Benutzerabmeldung“.
Beim Start erfasst die Anwendung die oben genannten Variablen und erstellt einen Datensatz in meiner Datenbank. Beim Abmelden (das ich erfasse) aktualisiere ich ein anderes Feld im selben Datensatz mit der Abmeldezeit.
Das Obige funktioniert genau so, wie ich es möchte: Wenn ich die Binärdatei starte, erstellt sie ihren ersten Protokolleintrag, wartet dann auf das Abmeldeereignis und aktualisiert denselben Datensatz.
Einschränkungen: Die .NET-Binärdatei sollte auf einem Freigabepunkt (\server\share\myapp\v1) gespeichert werden können, sodass ich die Anwendung auf (\server\share\myapp\v2) aktualisieren und einfach das GPO/Anmeldeskript aktualisieren kann.
Mein erster Gedanke war, das Verzeichnis \domaincontroller\sysvol\ zum Speichern der Binärdatei zu verwenden und dann alle Benutzerkonten zu aktualisieren, um einen Aufruf meiner Anwendung einzuschließen. Können Sie irgendwelche Mängel in diesem Ansatz erkennen?
Meine Frage ist folgende: Erstens, ist an meiner obigen Idee etwas falsch? Und zweitens, wenn ja, was ist der beste Weg (über Gruppenrichtlinien oder auf andere Weise), um sicherzustellen, dass diese Anwendung immer dann gestartet wird, wenn eine Sitzung auf einem Server gestartet wird?
Antwort1
Um jedes Mal, wenn eine Sitzung gestartet wird, ein Anmeldeskript auf Basis einer Gruppenrichtlinie zu verwenden, reicht dies aus. Die einzige Einschränkung, die wir festgestellt haben, ist, dass solche in einer Benutzer-GPO angegebenen Skripte ZWEIMAL ausgeführt zu werden scheinen, wenn die „Loopback-Verarbeitung“ für alle zutreffenden Computerobjekt-GPOs aktiviert ist. Wir mussten daher unsere Anmeldeskripte ändern, um diesen Fall zu behandeln.
Ich bin nicht mit .NET-Ereignisabonnements vertraut und weiß daher nicht, ob das bedeutet, dass die Anwendungsdatei während der gesamten Sitzung geöffnet bleibt. Wenn das der Fall ist, wird die Aktualisierung der App aufgrund des Problems mit offenen Sperren sehr schwierig sein. Wenn 50 Stationen angemeldet sind, hat die App 50 Schreibsperren, was die Aktualisierung der App erschwert. Dies ist ein Beispiel dafür, wo es hilfreich sein kann, die App auf Sysvol zu halten (eigentlich im GPO selbst), da es diesen Fall besser handhabt.
Dies bedeutet jedoch lediglich, dass es beim Abmelden erneut ausgelöst wird. Es sollte kein Problem sein, es auf einer Freigabe zu belassen.
Antwort2
Es ist überhaupt nichts falsch daran, es vom Sysvol aus auszuführen.
Und das Erstellen eines GPO-Anmeldeskripts würde genau das standardmäßig tun und auch sicherstellen, dass es ausgeführt wird. Normalerweise haben Terminalserver mehrere GPOs und eines davon würde Ihr Anmeldeskript ausführen und den Gruppenrichtlinien-Loopback-Verarbeitungsmodus angeben.