J'ai un processus qui s'exécute dans le contexte de sécurité du compte système local. À partir de C#, comment puis-je démarrer (en utilisant System.Diagnostics.Process.Start) un processus qui s'exécutera dans le contexte de sécurité de l'utilisateur actuellement connecté, pas du compte système?Récupère l'identité de l'utilisateur actuellement connecté, pas du compte système
Répondre
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().
Je crois que vous devrez déterminer/évaluer quelle session est connectée localement - voir WTSEnumerateSessions/WTSQuerySessionInformation/WTSQueryUserToken et je pense que vous êtes limité à l'API Win32, je ne pense pas theres un encapsuleur de code managé.
- 1. Récupère l'utilisateur du système d'exploitation actuellement connecté dans Adobe Air
- 2. Compte de domaine connecté jquery
- 3. Django Modèle: Nom d'utilisateur de retour de l'utilisateur actuellement connecté
- 4. Récupère le séparateur de fraction du paramètre système actuel
- 5. Comment obtenir le rôle de l'utilisateur actuellement connecté dans wordpress?
- 6. Comment vérifier si un Socket est actuellement connecté en Java?
- 7. Trouver l'utilisateur actuellement connecté à partir d'une extension Firefox
- 8. Compte système de l'application C# Form
- 9. Comment vérifier si l'utilisateur actuellement connecté utilise un profil itinérant?
- 10. Comment obtenir la liste des rôles pour l'utilisateur actuellement connecté
- 11. Dans Django, comment puis-je connaître l'utilisateur actuellement connecté?
- 12. Gestion de différentes bases de données avec LINQ en fonction de l'utilisateur actuellement connecté?
- 13. Projet d'installation Visual Studio - exécuté en tant que compte système
- 14. Devrais-je utiliser l'adhésion pour ce système de compte inhabituel
- 15. interruptions du système d'exploitation
- 16. Étendue du système dans l'analyse du système
- 17. Script du système Webmail
- 18. La différence entre le compte 'Système local' et le compte 'Service réseau'?
- 19. Déterminer si l'utilisateur est connecté
- 20. Comment puis-je obtenir l'utilisateur Windows actuellement connecté dans Access VBA?
- 21. OSX - Récupérer l'ID utilisateur de l'utilisateur connecté à partir d'un service système
- 22. Désactivation du verrouillage de compte avec SqlMembershipProvider
- 23. Récursif du système de fichiers avec Powershell
- 24. Magento section "Mon compte"
- 25. Récupère l'utilisation du réseau dans C#
- 26. Détermination de la "charge du système"
- 27. DirectoryEntry.Invoke ("groups", null) ne récupère pas tous les groupes?
- 28. Installer le certificat du client pour IIS App Piscine compte
- 29. Suivre l'activité du système
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