Wie, um mein Programm auf vor der Abmeldung auf windows XP?
Ich bin auf der Suche nach einer umgekehrten version von "RunOnceEx".
RunOnceEx ausgeführt, einige Programm, bevor die shell des Benutzers(desktop&Taskleiste) starten. Die login-Fortschritt wird nicht fortgesetzt, bevor die "runonceex" abgeschlossen.
Ich tun will, genau die gleichen, aber auf Benutzer Abmelden.
Wenn Sie/er sich Abmelden, werden alle Laufenden Programm Herunterfahren, verlassen der shell(desktop&Task-Leiste), dann ""ich wünschte, mein Programm ausgeführt wird, in diesem moment,"", abschließend logout.
Ich denke, es ist möglich, weil die "mobsync.exe" ist das zu tun. Aber ich kann nicht finden, wo und wie es zu tun.
- Ich wurde gefragt, für eine "programmierbare" Weg -, dass ich es einrichten können, während meiner installation oder eine option in der Anwendung. Die Gruppenrichtlinie ist toll, aber es funktioniert einfach nicht beheben Anforderung. Microsoft hartzucodieren die "mobsync.exe"?
- Wie @VonC sagte, justr fügen Sie einige registry-Einträge. wie schwer ist das!
- Sind Sie auf der Suche nach einer Lösung in C/C++ - oder .NET? Auch, mobsync.exe ist ein Programm von Microsoft, und mehr als wahrscheinlich, verwendet die Registry-Einträge wie alle Antworten, die Sie ablehnt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laufen diese nur für den aktuellen Benutzer sind, können Sie WMI, verwenden um eine information, wenn ein shutdown/logout Auftritt.
Entweder Sie schreiben Sie ein kleines C# (oder jeder anderen Sprache verwenden können, WMI) - Anwendung oder das vbs-Skript zum Abhören der Win32_ComputerShutdownEvent WMI-Ereignis.
Beispiel C# app gefunden werden können hier in dieser Frage: Holen Sie sich Abmelden Ereignis aus dem system
Warnung, wie gesagt hier,
gpedit.msc
Ihnen erlauben, konfigurieren Sie ein logoff-Skript für alle Benutzer.Wenn du das script nur für einen user, Sie müssen es erklären, direkt in der Registrierung, die beide in
HKCU
undHKLM
.gefunden in das erste Ergebnis bei google für mich
Zum ausführen eines Programms Sie können ein Skript erstellen, ausführen, und Sie verwenden Gruppenrichtlinien, um ihn durchzusetzen.
Im Gruppenrichtlinien-Editor, navigieren Sie zu Benutzerkonfiguration-->Windows-Einstellungen-->Skripts (Anmelden/Abmelden)
mehr Informationen hier
Wenn Sie möchten, ein aktives Programm zum ausführen von code auf Abmelden, dann sollten Sie die Haken der
WM_QUERYENDSESSION
Nachricht und suchen Sie sich einenlParam
Wert vonENDSESSION_LOGOFF
(0x80000000).Ist es wichtig zu testen, für diese
lParam
Wert, weil die anderen diejenigen, die angeben, einen "forced close", d.h. Sie verarbeiten kann getötet werden, bevor der code überhaupt ausgeführt werden darf. In der Tat, die meisten shutdown/session-Ende Nachrichten sind nur dazu gedacht, um Ihnen eine Möglichkeit zum ausführen von last-minute-cleanup-code und nicht sicher zu reagieren, um mit lang Laufenden Aktionen, aber diese Kombination sollte OK sein.Hinweis: ich habe nie versucht,, um tatsächlich einen separaten Prozess ausgeführt in Reaktion auf die
WM_QUERYENDSESSION
Nachricht. Es ist möglich, dass der Fenster-manager verbieten dieses, wie es beim Herunterfahren. Versuchen Sie es und sehen, denke ich.Wenn Sie in einem .NET Umfeld (, die Sie nicht angeben), ein schnellerer Weg ist, um einen Ereignishandler hinzufügen, um die
Microsoft.Win32.SystemEvents.SessionEnding
Veranstaltung.Was Sie brauchen, ist eine Implementierung von GINA. Sie können Ihre eigene Befehle in WlxIsLogoffOk - Funktion, die aufgerufen wird, wenn der Benutzer initiiert eine Abmeldung
Sobald Sie die richtige GINA-dll, die Sie registrieren, können Sie sich hier:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\@GinaDLL
Hier ist eine Implementierung, die passen kann Ihr benötigt (es bietet eine Abmeldung registry-key wo man angeben konnte Ihr Befehl):
http://wwwthep.physik.uni-mainz.de/~frink/newgina_pre09/readme.html
Als VonC und TFD bereits erwähnt, ist die Gruppenrichtlinien-Editor ist nur ein weiterer Weg, um die Bearbeitung der registry.
Machen einfach mit gpedit die Veränderungen (in der Userconfig - Windows-Einstellungen - Skripts), die Sie mögen und danach suchen Sie in der registry unter
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\Scripts]
finden Sie heraus, wie Sie können dies direkt.
Auch auf meinem PC (hängt in einer Domäne) ist ein versteckter Ordner
C:\WINDOWS\System32\GroupPolicy
mit Unterordnern für Anwender und Maschine. Beide haben weitere Unterordner namens Shutdown und Startup. Vielleicht können Sie auch verwenden diese.Wenn Sie etwas benötigen, einfach und funktioniert für eine einzelne (oder alle) Nutzer können Sie eine einfache Anwendung in C++ oder C# zum Beispiel.
Die einfachste ist mit einem C# im tray (indem Sie einfach die Fach-Komponente auf die form) und registrieren und event-handler für die FormClosing Veranstaltung. Es würde wie folgt Aussehen:
Damit Ihre Anwendung gestartet werden, die mit Windows oder mit dem Benutzer. Es werde warten (mit ein bisschen Speicher) und wird etwas tun, wenn das system herunterfährt oder der Benutzer Abmelden, etc (durch anklicken von "CloseReason" oben).