Dans un scénario d'usurpation d'identité lié à Sharepoint, j'ai besoin d'exécuter du code dans un processus séparé (le processus s'exécutera dans le contexte d'un certain utilisateur). Je ne veux pas lancer une application séparée, fondamentalement je veux faire un "run as" sur juste une méthode.Exécution du code .net dans un processus distinct
Répondre
La méthode Process.Start a une surcharge pour démarrer le processus à condition que vous ayez l'utilisateur, le mot de passe et le domaine appropriés.
Ce que vous voulez faire est de créer un objet ProcessStartInfo et de spécifier le bon nom d'utilisateur et mot de passe au démarrage du processus. Ainsi, vous pouvez faire quelque chose comme ceci:
Dim psiNewProcess As New ProcessStartInfo("Notepad.exe")
psiNewProcess.UserName = "MyUserName"
psiNewProcess.Password = "MyPassword"
Process.Start(psiNewProcess)
Oh, le processus est dans l'espace de noms System.Diagnostics si elle est pas déjà importé pour votre projet.
EDIT: sidenote rapide, le mot de passe est en fait un objet de type SecureString, donc MSDN suggère de remplir la valeur de cette façon:
Dim instance As ProcessStartInfo
Dim value As SecureString
value = instance.Password
instance.Password = value
"Exécuter du code dans un processus séparé" = "lancer une application séparée". Je veux dire, vous pouvez lancer un seul processus et lui demander d'exécuter la méthode en question ... mais ce n'est pas clair si c'est ce que vous voulez.
Pourriez-vous indiquer où peut trouver plus d'informations sur ce sujet, peut-être un Exemple. C'est ce que je veux faire. – kjv
Fondamentalement, vous auriez besoin de démarrer un nouveau processus (une fois) et de communiquer sur un tuyau nommé (ou autre). Si vous utilisez une version récente de .NET, WCF peut être la meilleure option - alors prenez un livre WCF ou un tutoriel. –
Je n'ai pas essayé moi-même mais this seems pour faire l'affaire.
Si le blocage de la méthode avec emprunt d'identité est correct jusqu'à la fin, cela devrait fonctionner. Donc votre code serait quelque chose comme:
...
WrapperImpersonationContext context = new WrapperImpersonationContext(domain, username, password);
context.Enter();
Results res = MyImpersonatedMethod(data);
context.Leave();
...
Hope this helps.
Lien est maintenant mort –
Mais il dit Permalink dans l'URL! :) –
Devinez c'est ça: http://michiel.vanotegem.nl/CommentView,guid,36633846-2eca-40fe-9957-2859d8a244dc.aspx Googling WrapperImpersonationContext retourne des résultats. –
- 1. Émulateur x86 léger pour .NET/Exécution du code x86 dans un environnement géré
- 2. Exécution du code C++ via NUnit
- 3. Win32: Exécution atomique du bloc de code
- 4. Exécution du format .NET en plein écran
- 5. Redirect gros du processus enfant avec .net
- 6. Exécution de processus métier avec REST
- 7. Insérer du code HTML dans un document Word OpenXML (.Net)
- 8. Exécution du site de production Sitecore dans un répertoire virtuel
- 9. Exécution d'applications .net sur un réseau protégé
- 10. Signature de code dans le cadre du processus de construction
- 11. Exécution d'un processus ou d'un thread séparé dans Qt
- 12. Exécution d'un code java donné dans un fichier texte
- 13. Exécution du paquet SSIS via le code VB.net
- 14. ASP.NET HttpModule - exécution garantie du code pré et post-gestionnaire?
- 15. Exécution du code python à partir de l'application Cocoa standard
- 16. Comment déterminer si le code .NET est en cours d'exécution dans un processus ASP.NET?
- 17. Exécution d'un programme à partir du code Java
- 18. Exécution d'un serveur client RMI dans un processus différent ... exception non liée
- 19. Exécution du processus Linux à partir de l'utilisation du servlet Runtime.exec()
- 20. Injecter le code dans le processus natif
- 21. Code de longue durée dans le processus asp.net
- 22. Exécution d'une application .NET sans cadre .NET
- 23. Code Python pour Daemoniser un processus?
- 24. Watching Global Events créé par un processus natif dans un processus .NET
- 25. [net] comment injecter du code de débogage à un assemblage?
- 26. Répertorier et terminer les processus dans .Net
- 27. .net webservice publication processus question
- 28. .NET inter-processus "événements"
- 29. Exécution d'un autre programme dans Windows fichier bat et pas de créer un processus enfant
- 30. Un plugin VS peut-il injecter du code dans le processus de compilation?
Je ne veux pas lancer une nouvelle application. Est-il possible d'utiliser ProcessStartInfo pour exécuter un morceau de code à partir de l'application dans laquelle je crée le nouveau processus? – kjv
Non, il n'est pas possible d'utiliser ProcessStartInfo pour cela. – skst