IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment executer un programme sous un autre compte?


Sujet :

C#

  1. #1
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Points : 281
    Points
    281
    Par défaut Comment executer un programme sous un autre compte?
    Bonjour,

    J'aimerai permettre à mon appli de lancer un programme sous mon compte windows, même si je ne suis pas loggé.

    En gros, elle tournerait quelque soit l'utilisateur dont la session serait ouverte et pourrait en tant nécessaire lancer l'exécution d'un programme en utilisant mon compte (biensur elle serait en possession des login et pass).

    Quelqu'un saurait il comment faire celà?

    Pour l'instant, j'utilise System.Diagnostics.ProcessStartInfo pour lancer l'autre programme.

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Salut,

    Tu as l'air de décrire un service windows. C'est une appli qui tourne en tâche de fond sous le compte que tu veux quel que soit l'utilisateur logué. Renseigne toi sur comment créer un service windows en .net.

  3. #3
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Points : 281
    Points
    281
    Par défaut
    Salut,

    Merci pour ta réponse. En fait mon appli n'est pas vraiment un service. J'ai déjà vu comment créer un service, ça aurait pu le faire en effet.

    En fait une partie de l'appli est quand même dépendante de l'utilisateur. Il peut y définir ses options et autres joyeusetés. Mais derrière, il y a toujours un morceau, qui vérifie l'état de fichiers par exemple et d'autres appli aussi.
    C'est dans ce cadre que je voudrais qu'elle soit capable de lancer un autre programme sous un autre compte ( le mien ). Même si c'est quelqu'un d'autre qui est loggé sous windows et qu'il utilise l'appli.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Regarde du côté de l'api Win32 "LogonUser". Elle te permet d'obtenir un token d'identité windows. Ce token tu pourras le donner à la méthode Impersonate de la classe System.Security.Principal.WindowsIdentity. A partir de la ton thread tourne avec l'identité que tu as fourni à LogonUser.

    Ya un peu de cuisine à faire pour bien libérer le token, s'assurer qu'on retourne bien à l'identité d'origine à la fin etc... mais je t'ai donné assez de mots clées pour que google te fournisse les détails

  5. #5
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Points : 281
    Points
    281
    Par défaut
    Merci pour ta réponse.
    Je pense que c'est la bonne voie.

    J'ai quand même toujours un problème.
    J'ai trouvé un exemple sur la msdn pour effectuer cette manipulation. ça semble fonctionner correctement mais...
    Le code montre comment changer le user vers un autre, ok, puis revenir vers le précédent. Super, ça marche...

    Mais je fais quoi avec??

    J'ai tenté de lancer un processus après être passé au user que je voulais, mais Process explorer m'indique que le processus a été lancé avec l'utilisateur actuel.

    Voici la source pour inspiration:

    Source

    Simple, j'ai "copier coller", puis ouvert un notepad dans un autre processus après "Check identity" et avant de "undo".

    L'utilisateur est bien passé à l'autre mais mon processus est toujours lancé par l'utilisateur courant.

    Une petite idée?

    Merci

  6. #6
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Points : 281
    Points
    281
    Par défaut
    ce post semble avoir résolu mon soucis:

    Post

    merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Comment executer un programme externe ?
    Par Worldofdada dans le forum C#
    Réponses: 7
    Dernier message: 11/02/2009, 14h36
  2. Réponses: 2
    Dernier message: 27/12/2005, 11h47
  3. [Reseau] Execution de programmes sur un autre PC
    Par el3gans dans le forum Général Java
    Réponses: 5
    Dernier message: 18/11/2004, 11h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo