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

Windows Discussion :

CreateProcessAsUser & requireadmin


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut CreateProcessAsUser & requireadmin
    Bonjour,

    j'ai un service Windows de mise-à-jour de mon logiciel qui doit exécuter des setups qu'il télécharge pour l'utilisateur courant. J'utilise donc la fonction "CreateProcessAsUser()" afin que mes setups soient lancés sur le bureau de l'utilisateur. Cela fonctionne correctement avec les setups qui ne requièrent pas les droits d'admin mais cela échoue si le setup en question stipule qu'il a besoin des droits admin pour s'exécuter.

    Mon souhait serait que le setup ayant besoin des droits admin fasse prompter l'UAC comme si l'utilisateur l'avait lancé lui-même.

    Je connais une solution mais elle n'est pas très sexy : lancer une application avec le CreateProcessAsUser(), qui elle va se charger de lancer le setup sur le bureau courant avec un ShellExecute().

    Savez-vous s'il ne serait pas tout simplement possible de faire en sorte que le CreateProcessAsUser() se comporte de la même manière pour les exe avec et sans option "requireadim" dans leur manifest ?

    Merci d'avance pour votre aide.

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Essaie de regarder du côté de SHCreateProcessAsUserW ou CreateProcessWithLogonW, peut-être...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Essaie de regarder du côté de SHCreateProcessAsUserW ou CreateProcessWithLogonW, peut-être...
    Oui mais en fait non:
    - SHCreateProcessAsUserW n'est plus disponible à partir d'XP.
    - CreateProcessWithLogonW nécessite de connaître le nom d'utilisateur et son mot de passe.

    Merci d'avoir essayé

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    N'y a-t-il pas aussi un truc du genre CreateProcessWithTokenW()?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    N'y a-t-il pas aussi un truc du genre CreateProcessWithTokenW()?
    J'ai tenté avec cette fonction aussi, mais j'ai toujours un échec au lancement car l'utilisateur n'a pas les droits admin.

    J'ai trouvé divers contournements mais cela m'étonne de ne vraiment pas pouvoir faire une sorte de shellexecuteasuser() à partir d'un service...ça sent le moisi !

    Merci quand même !

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par pataguillon Voir le message
    J'ai trouvé divers contournements mais cela m'étonne de ne vraiment pas pouvoir faire une sorte de shellexecuteasuser() à partir d'un service...ça sent le moisi !
    Sans que l'utilisateur n'entre au moins une fois son MdP ? Non, c'est plutôt normal en fait...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

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