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

Plateformes Discussion :

UAC : comment l'éviter ? [Windows]


Sujet :

Plateformes

  1. #1
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut UAC : comment l'éviter ?
    Je me suis cassé la tête des heures pour trouver un problème qui est en fait lié au fait que mon application réclame des droits administrateurs pour se lancer. Alors que je n'y ai mis aucun manifest ni rien pour ça.

    C'est une application qui contient une fonctionnalité spéciale pour Windows 7+ (barre d'avancement dans le bouton de la barre des tâches), qui utilise les messages systèmes. Or, en mode administrateur, certains messages sont apparemment filtrés, donc ça ne fonctionne plus.

    J'aimerais savoir pourquoi est-ce que l'UAC se manifeste (huhu) pour réclamer les droits administrateur, et comment l'enlever... Est-ce que Qt génère secrètement un manifest lorsqu'on utilise certaines fonctionnalités ? Est-ce que c'est par contamination d'une dépendance, une dll, qui a besoin des droits admin ?

    Je mets mon projet en pièce jointe, le code date un peu (j'étais débutant, c'est pas beau) mais c'est tout petit. C'est un logiciel d'installation facile de la dernière build de Chromium sur Windows.
    Fichiers attachés Fichiers attachés

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Pouvez-vous préciser à quel endroit les droits sont demandés ? Au lancement ?
    Un moment, j'ai pensé que c'était à cause du dossier d'installation. Dans les dossiers utilisateurs, les droits ne sont pas demandés, normalement.
    De plus il y a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetFileAttributes ( installer.fileName().toStdWString().c_str(), FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM );
    même si je ne pense pas que cela soit très grave.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    Le petit bouclier est affiché sur l'exécutable, ça demande donc des droits administrateur au lancement.

    J'ai testé, cette ligne de code n'est pas en cause.

    C'est un .exe portable qui crée juste un .ini à côté, donc y'a pas de lieu d'installation.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Les fonctions dans winutils.h sont elles utilisées ? Pouvez-vous les retirer (quitte à retirer le fichier du projet) pour voir si cela est mieux ?
    Il y a une fonction, je sais pas encore laquelle, qui fait que cela ne convient pas à Windows. Sinon, dans quel dossier compilez vous ? un dossier "utilisateur" ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    Comme t'as l'air persuadé que ça vient forcément de ce que j'ai compilé (bien que je pensais avoir tout vérifié), je suis repassé sur mon projet, cette fois en faisant bien des qmake/recompiler.

    Et le coupable est (dans le fichier .rc) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            BLOCK "VarFileInfo"
            BEGIN
                VALUE "Translation", 0x40c, 1200
            END
    1200 = Unicode
    1252 = Multilingual

    En remplaçant 1200 par 1252, le problème est résolu. Le simple fait d'indiquer un mauvais charsetID (je ne suis pas sûr de comprendre en quoi il était mauvais) provoque le bouclier "droits admin", et souvent aussi la fenêtre qui demande si le programme s'était installé correctement (preuve qu'une anomalie a été détectée).

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    J'avais rencontré la levée de bouclier une fois et donc, j'avais recherché sur le sujet, mais de là à trouver que ce soit ce truc là
    Bon, bah tant mieux, y a plus qu'à sauvegarder cette information dans un coin de notre tête, pour les prochaines fois
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    Quelle histoire quand même.

    - La barre de chargement dans la barre des tâches, qui fonctionnait sur mon ancien PC Windows 7, ne fonctionne plus sur mon nouveau Windows 8.1.
    J'ai compris maintenant que l'OS n'y est certainement pour rien, c'est parce que j'avais désactivé l'UAC sur l'ancien PC et que maintenant je l'ai laissé.

    - En mettant des logs, je vois qu'en fait je ne reçois jamais le message système "TaskbarButtonCreated" attendu pour créer l'objet ITaskbarList3 qui permet la manipulation de cette fonctionnalité. Je cherche à en apprendre plus sur ce fonctionnement en "messages".

    - Je me suis battu quelques heures pour essayer de comprendre qu'est-ce que j'avais mal fait pour que ça ne fonctionne plus sur Windows 8.1, j'ai cherché un exemple minimaliste de la fonctionnalité pour tester => ça fonctionne.

    - Qt Creator refuse de me lancer mon exe avec la flèche verte, à cause des droits administrateur. Pour aller plus vite et pouvoir déboguer, je redémarre Qt Creator en mode administrateur cette fois.

    - Surprise, émoi : l'exemple minimaliste (qui ressemblait exactement à mon code) ne fonctionne plus ! Je ne comprends plus rien.

    - Qu'est-ce qui a changé... Les droits de lancement ! Je le lance depuis l'explorateur, il marche toujours en fait ! En fouillant le Web, je peux lire une confirmation : en mode administrateur, certains messages sont bloqués (par l'UAC ?).

    - Me voilà donc à courir après ce problème de lancement, à enlever/remettre du code, à enlever le .rc, à tester avec une autre version de Qt... J'aurais dû trouver quelque chose si j'avais à chaque fois fait qmake/recompiler, mais je suis passé à côté, et me voilà de désespoir à créer ce topic.

    - La suite se trouve ici, c'est donc un bête problème d'indication de charset dans les ressources (ah l'encodage...). Mon code n'était pas en cause, l'OS n'était pas en cause...

    Conclusion : vive l'informatique !

  8. #8
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Avouez, vous êtes heureux
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  9. #9
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    J'aurais pu être aussi heureux plus tôt !

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

Discussions similaires

  1. 2 variables qui pointent vers les mêmes valeurs: comment l'éviter?
    Par skystef dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 03/04/2008, 11h51
  2. Logiciel de filtre web. Comment les éviter
    Par babemagus dans le forum Applications
    Réponses: 3
    Dernier message: 03/03/2006, 17h38
  3. Problemes de doublons...comment les éviter?
    Par paflolo dans le forum Langage SQL
    Réponses: 5
    Dernier message: 28/02/2006, 14h57
  4. Réponses: 8
    Dernier message: 16/06/2005, 13h58
  5. Fonction template virtuelle... comment l'éviter ?
    Par :Bronsky: dans le forum Langage
    Réponses: 12
    Dernier message: 07/06/2005, 14h21

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