2009-09-26 5 views
0

Existe-t-il un moyen de forcer une déconnexion (sachant que cela n'est pas recommandé) de l'utilisateur interactif (connecté) actuel et de se connecter avec un nouveau compte utilisateur (interactif - n'utilisant pas des trucs tels que LogonUser et autres astuces d'usurpation) Quelqu'un appuie-t-il physiquement sur LOGOFF, puis sélectionne un nouveau compte sur LOGON ...?Comment est-ce que je déconnecte par programmation l'utilisateur actuel et me connecte comme un autre?

Le problème est que mon service crée un nouveau compte d'utilisateur par programmation - et j'ai besoin de trouver un moyen de créer son profil utilisateur correspondant. De ce que je peux voir la seule façon qui fonctionne serait de se déconnecter physiquement de l'utilisateur actuel, puis se connecter en tant que nouvel utilisateur (qui va créer le profil utilisateur pour HKCU, Documents & Paramètres, etc ...). Cela semble un peu fou, mais je ne peux pas trouver un meilleur moyen ...

Donc, je dois trouver un moyen de forcer par programmation les actions de connexion & de déconnexion (de mon service Windows en cours d'exécution sous LocalSystem) - J'ai tous les informations d'identification et droits d'accès nécessaires ... Existe-t-il des appels de fonction système que je peux utiliser? Pour la fermeture de session, je pense que je peux utiliser WTSLogoffSession (...), essayant toujours de le faire fonctionner mais semble prometteur - mais je n'ai aucune idée de ce qu'il faut faire à propos de la connexion ... Alternativement s'il y a une meilleure approche pour résoudre mon problème, je suis toutes les oreilles :)

Toute aide ou conseils serait très apprécié ... Merci,

+1

Y at-il une raison valable pour la création d'un compte utilisateur programatically? –

+0

Existe-t-il une raison valable de forcer quelqu'un à se déconnecter? –

+0

Seulement pour que je puisse ensuite me connecter avec l'autre utilisateur et forcer le profil utilisateur (HKCU, Documents & Paramètres, etc ...) à être créé ... Je ne pouvais pas trouver un meilleur moyen ... – Shaitan00

Répondre

0

Microsoft a cette solution en C++, que vous pouvez utiliser pour pirater un C# solution, ou mettez dans une DLL et appelez-le en utilisant COM interop.

http://support.microsoft.com/kb/196070

+0

J'ai essayé celui-là - et il ne semble pas fonctionner sur mes systèmes (Windows 2000 Pro et Win XP SP2) - Je ne reçois pas d'erreurs ou d'exceptions, le compte est créé, LoadProfile s'exécute - mais le profil utilisateur n'est tout simplement pas créé. – Shaitan00

+0

Peu importe - je pense qu'il est résolu maintenant - je me trompais certains paramètres ... – Shaitan00

+0

Comment faites-vous ce C#? – jaysonragasa

0

avez-vous réellement besoin de connecter l'utilisateur ou tout simplement créer un? Pour la création, vous pouvez utiliser

  • NetGroupAdd()
  • NetUserAdd()
  • NetGroupAddUser()
  • NetLocalGroupAdd()
  • NetLocalGroupAddMember()

API

+0

Mais de quoi Je sais - aucun d'entre eux ne créera le PROFIL UTILISATEUR pour vous ... ils se connecteront en tant qu'utilisateur (qui fonctionne bien) mais pas de Documents et Paramètres, pas d'UTILISATEUR ACTUEL HKEY, etc ... jusqu'à ce qu'une connexion interactive se produise (à partir de quel J'ai vu). Ou faites-vous une de ces méthodes pour faire quelque chose de spécial? Je n'ai pas encore essayé chacun ... – Shaitan00

+0

http://support.microsoft.com/kb/196070, LoadUserProfile devrait faire l'affaire – AlexEzh

Questions connexes