2009-10-09 6 views

Répondre

1

Vous devrez obtenir le jeton de l'utilisateur actuellement connecté et appeler CreateProcessAsUser. N'oubliez pas qu'avec Fast-User-Switching (FUS), plus d'un utilisateur peut être connecté à la machine, vous devez donc choisir l'utilisateur pour lequel vous souhaitez démarrer votre processus.

Pour énumérer les sessions utilisateur, vous pouvez utiliser l'API WTSEnumerateSessions. Utilisez ceci pour trouver les identifiants de session en cours. Appelez ensuite WTSQueryUserToken pour obtenir le jeton de l'utilisateur actuellement connecté. En utilisant ce jeton, vous pouvez utiliser CreateProcessAsUser.

Malheureusement, vous devrez utiliser P/Invoke pour tous ces appels de méthode. Si vous avez le nom d'utilisateur et le mot de passe, vous pouvez simplement utiliser la surcharge System.Diagnostics.Process.Start().

+0

Merci Chris. Je l'ai codé et il échoue; Marshal.GetLastWin32Error() signale le code d'erreur à 3 (je crois que cela signifie que les privilèges sont insuffisants). Toute idée de ce qui pourrait causer l'échec (question à long terme). – DEH

Questions connexes