2010-08-10 6 views
1

J'ai un programme qui s'exécute comme une tâche planifiée. Le programme fonctionne sous XP en tant que SYSTEM. L'idée est que le programme s'exécute en arrière-plan, alors que USER est actif.Exécuter en tant que système et déconnecter l'utilisateur "USER" Broche

J'ai besoin du programme pour fermer la session USER lorsque des conditions spécifiques se produisent.

J'ai essayé d'utiliser:

[DllImport("user32.dll")] 
public static extern int ExitWindowsEx(int uFlags, int dwReason); 

mais qui semble ne pas session d'utilisateur.

Je pense peut-être que le système est désactivé, car il fonctionne en tant que système.

Comment puis-je logogg USER?

Merci, SummerBulb.

Répondre

0

Il serait utile si vous montriez les drapeaux pour ExitWindowsEx, mais vous devrez peut-être usurper l'identité de l'utilisateur, même si je pense que c'est peu probable. Si je me souviens de la déconnexion, l'utilisateur actuel était suffisant, mais vous devrez peut-être forcer la fermeture de session, car elle peut être annulée dans le cas contraire, si l'utilisateur n'a pas sauvegardé certaines modifications par exemple.

Mais pour usurper l'identité d'un utilisateur, vous pouvez regarder ceci: http://www.codeproject.com/KB/system/UserImpersonation.aspx

Je voudrais commencer par regarder ici, et inclure à la fois la fermeture de session et les valeurs forceifhung: http://msdn.microsoft.com/en-us/library/aa376868(VS.85).aspx

Il serait similaire à EWX_FORCEIFHUNG | EWX_LOGOFF en tant que paramètre.

MISE À JOUR:

Je pense Mike est exact que l'usurpation d'identité ne sera pas utile ici.

+0

Je ne pense pas que l'usurpation d'identité le fera parce que vous obtiendrez une autre instance de la fenêtre/bureau/session de la fenêtre utilisateur. – Mike

0

Je pense que vous devrez exécuter du code en tant qu'utilisateur. Créez une application qui s'exécute lorsqu'un utilisateur se connecte puis surveille un événement. Demandez à votre service de définir l'événement, puis le code appellera la méthode ExitWindowsEx. Vous devrez toujours utiliser les paramètres forceifhung et logoff comme James l'a mentionné.

+0

J'avais un économiseur d'écran que j'ai écrit qui serait lancé par un service de fenêtre, en tant que système, déconnecter l'utilisateur, mais ces types de problèmes sont très, très difficiles à déboguer. –

Questions connexes