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

VB 6 et antérieur Discussion :

Lancer exécutable en tant qu'administrateur


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut Lancer exécutable en tant qu'administrateur
    Bonjour,
    Je reprends de vielles appli VB5 que je dois faire fonctionner sous Vista et ultérieur.
    J'utilise Inno Setup pour créer l'installateur. Le .exe est copié dans "Programmes files" alors que les fichiers qui doivent être mis à jour sont dans "Programdata".
    Lorsque je lance l’exécutable les fichiers ne sont mis à jour uniquement si j'exécute en tant qu'administrateur (clic droit..etc). Je voudrais que ce mode d'exécution soit automatique sans la nécessité de faire "clic droit..."
    J'ai beaucoup cherché via google mais je n'ai rien trouvé de clair. J'ai modifié le script d'inno setup en créant mes répertoires ou en copiant mes fichiers avec "Permissions: users-full" mais ça ne fonctionne pas !
    Je pense que je ne suis pas le seul a avoir eu le problème, pourriez-vous m'aider à trouver la solution ? Est-ce possible avec Inno Setup ou autre solution ?
    Par avance je vous remercie

  2. #2
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Tu fais un clic droit sur ton exécutable > propriété > compatibilité > en bas de la fenêtre coche Exécuter ce programme en tant qu'administrateur
    "Ce n'est pas parce que les choses sont impossibles qu'il faut les accepter."

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci pour la réponse mais c'est justement ce que je ne veux pas...
    Je voudrais que ce mode d'exécution soit automatique sans la nécessité de faire "clic droit..."
    Je reste donc sur ma faim.

  4. #4
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Voici un lien, mais sans être sur que c'est bien cela que tu veux...
    http://www.bellamyjc.org/fr/superexec.html
    "Ce n'est pas parce que les choses sont impossibles qu'il faut les accepter."

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci petit rabot pour ta réponse, je ne connaissais pas SERPEREXEC qui est intéressant puisqu'il permet de lancer un exécutable en mode administrateur tout en masquant le nom et le MDP de l'administrateur. Ceci étant, ce n'est pas ce que je recherche.
    Lorsque je lance l’exécutable les fichiers ne sont mis à jour uniquement si j'exécute en tant qu'administrateur (clic droit..etc). Je voudrais que ce mode d'exécution soit automatique sans la nécessité de faire "clic droit..."
    D'après la littérature il semble que mon problème puisse être résolu en ajoutant dans le répertoire de l'application un MANIFESTE.
    Qu'en pensez-vous, avez-vous un exemple que je puisse modifier facilement ?
    Par avance merci

  6. #6
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    Salut Daniel

    Citation Envoyé par DanielB Voir le message
    (...)
    D'après la littérature il semble que mon problème puisse être résolu en ajoutant dans le répertoire de l'application un MANIFESTE.
    Qu'en pensez-vous, avez-vous un exemple que je puisse modifier facilement ?
    Par avance merci
    Voici un exemple de manifest qui, je crois, devrait répondre à ta demande (je n'ai pas testé...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
    <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
        <security>
          <requestedPrivileges>
            <requestedExecutionLevel level='requireAdministrator' uiAccess='false' />
          </requestedPrivileges>
        </security>
      </trustInfo>
    </assembly>

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci Aniki pour la réponse. Je vais donc créer un fichier .xml pour faire un essai mais que dois-je faire de ce fichier pour que Windows le prennent en compte.
    Par avance merci.

  8. #8
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    Il me semble que le fichier manifest doit avoir le même nom que l'exécutable (extension incluse) et avoir comme extension "manifest".
    Un petit exemple :
    le_nom_de_mon_appli.exe
    le_nom_de_mon_appli.exe.manifest

    Le fichier manifest devant se trouver dans le même répertoire que l'exécutable.

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci Aniki pour la réponse, j'ai procédé comme indiqué pour créer le manifest. Ça fonctionne et windows reconnait bien que le programme a besoin des droits administrateurs, d'ailleurs le petit bouclier est visible dans l'icone du programme.
    Moi, je veux que mon exécutable se lance et que les fichiers se mettent à jour comme sous XP. Je précise que mon exécutable est installé dans le dossier "Programmes" et les données dans "ProgramData". L'installation est faite par "inno setup".
    Ma difficulté est qu'un fichier .txt n'est pas mis à jour dans "ProgramData".
    Suis-je le seul a avoir ce problème ?
    Par avance merci

  10. #10
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    Dans ton post initial, tu as dit que les fichiers, situés dans ProgramData, devant se mettre à jour ne l'étaient que si ton exécutable était lancé avec les droits Administrateur.
    ProgramData ne nécessitant pas ces droits pour pouvoir y écrire, je suppose que tu as un problème dans ton mécanisme de mise à jour.

    Citation Envoyé par DanielB Voir le message
    (...)
    Moi, je veux que mon exécutable se lance et que les fichiers se mettent à jour comme sous XP. Je précise que mon exécutable est installé dans le dossier "Programmes" et les données dans "ProgramData". L'installation est faite par "inno setup".
    Ma difficulté est qu'un fichier .txt n'est pas mis à jour dans "ProgramData".
    Suis-je le seul a avoir ce problème ?
    Par avance merci
    Là, tu dis qu'un seul fichier n'est pas mis à jour en lançant ton exe avec les droits indirectement (via le manifest).

    Le problème ne se présente-t-il pas aussi si tu lances l'exe explicitement avec les droits admin ? (click droit, etc...)
    Si non, alors le manifest ne doit pas exactement te donner les mêmes droits que quand tu fais click droit...

    Comment fonctionne ton système de mise à jour des fichiers ?
    D'où est-ce que tu tires la nouvelle version de tes fichiers ?
    Sont-ils directement copiés dans ProgramData ?

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci pour la réponse,
    L'appli dont je parle ne met à jour qu'un seul fichier texte.
    Le fichier est installé sur le PC avec Inno Setup de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "c:\MaSource\MonFichier.txt"; DestDir: "c:\ProgramData\MaDestination\MonFichier.txt";Permissions: users-modify
    Avec VB, à chaque lancement de l'appli, le fichier est supprimé (pour effacer son contenu) puis récréé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'Suppression du fichier
    Kill "c:\ProgramData\MaDestination\MonFichier.txt"
    'Exemple pour recréer le fichier et écrire la date dans MonFichier.txt
    Dim MyDate
    MyDate = Date
    CRLF = Chr(13) + Chr(10)
    Dim FileNumber
    FileNumber = FreeFile
    Open c:\ProgramData\MaDestination\MonFichier.txt" For Append As #FileNumber
    Print #FileNumber, "Date :"; MyDate;
    Close #FileNumber   ' Ferme le fichier."
    J'ai constaté que, si je ne supprime pas le fichier à chaque lancement de l'appli, le fichier est bien mis à jour quelque soit l'utilisateur (avec ou sans droit administrateur), le fichier étant donc celui qui a été copié par Inno Setup lors de l'installation. J'en conclus qu'il faudrait qu'au lieu de supprimer le fichier, j'efface son contenu... Qu'en pensez-vous et comment le faire ? Par avance merci

  12. #12
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    Citation Envoyé par DanielB Voir le message
    (...)
    J'ai constaté que, si je ne supprime pas le fichier à chaque lancement de l'appli, le fichier est bien mis à jour quelque soit l'utilisateur (avec ou sans droit administrateur), le fichier étant donc celui qui a été copié par Inno Setup lors de l'installation. J'en conclus qu'il faudrait qu'au lieu de supprimer le fichier, j'efface son contenu... Qu'en pensez-vous et comment le faire ? Par avance merci
    Et quand tu debogues, il se passe quoi ? Ca plante ? Ca plante pas mais le fichier n'est pas à jour ?
    Et en debogage pas à pas, quand tu passe sur la ligne Kill blabla, une erreur est-elle générée ? Si non, est-ce que le fichier est bien supprimé dans ton dossier ProgramData ?

  13. #13
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Bonjour et merci pour la réponse,
    Voici ce qui se passe : si j'installe mon fichier (via Inno Setup) sous un compte et que j'exécute mon application avec ce compte, mon fichier texte se met à jour correctement . Ensuite, si je change de compte et que je lance l'appli sous un autre compte le fichier texte est ignoré, sans plantage ni message, il est simplement ignoré. Plus généralement si un fichier texte est créé (Open "c:\ProgramData\MonFichier.txt" For Output Shared As #1) par un utilisateur, l'appli ne le prend pas en compte pour un autre utilisateur car le propriétaire du fichier est différent. Est-ce normal ? Y a-t-il un moyen de contourner le problème. Par avance merci.

  14. #14
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    Citation Envoyé par DanielB Voir le message
    (...) l'appli ne le prend pas en compte pour un autre utilisateur car le propriétaire du fichier est différent. Est-ce normal ? Y a-t-il un moyen de contourner le problème. Par avance merci.
    J'imagine que c'est normal. La solution serait de donner les droits d'écriture/modification à tous les utilisateurs. Peut-être est-ce possible de le faire via Inno Setup.
    Mais est-ce vraiment ce que tu veux ? Est-ce que tous les utilisateurs doivent se partager un fichier commun ? Ou bien serait-il plus approprié d'avoir un fichier pour chaque utilisateur (et dans ce cas, l'emplacement ne serait plus "common data" mais "user data") ?

  15. #15
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci,
    Oui, je veux partager ce fichiers entre tous les utilisateurs. J'ai installé le fichier dans c:\users\public et ça fonctionne bien avec tous les utilisateurs, en revanche, mon appli n'arrive pas à copier le fichier dans c:\users\all users

  16. #16
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    Citation Envoyé par DanielB Voir le message
    (...)mon appli n'arrive pas à copier le fichier dans c:\users\all users
    Bizarre...
    Qu'est-ce qu si passe en mode debug ? Si une erreur est générée, quelle est-elle ? (Err.Description)
    Je regarderai demain pour trouver plus d'infos, mais normalement, le dossier ProgramData devrait être là pour ça et devrait marcher.

  17. #17
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    MERCI
    Et quand tu debogues, il se passe quoi ? Ca plante ? Ca plante pas mais le fichier n'est pas à jour ?
    Et en debogage pas à pas, quand tu passe sur la ligne Kill blabla, une erreur est-elle générée ? Si non, est-ce que le fichier est bien supprimé dans ton dossier ProgramData ?
    Il ne se passe rien, le code est ignoré, Kill ne supprime pas le fichier et il n'y a pas de mise à jour.
    Dans programData, le fichier est supprimé ou mis à jour que s'il a été créé par l'utilisateur qui a lancé l'appli. Donc problème si l'utilisateur change... N'est-ce pas le comportement normal avec UAC ?

  18. #18
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    Si j'ai bien tout compris, ce problème a été résolu dans cette discussion, n'est-ce pas DanielB ?
    Si c'est le cas, tu peux aussi passer en résolu.

  19. #19
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Nous sommes d'accord, je mets "résolu". MERCI pour votre aide

  20. #20
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Aniki Voir le message
    Voici un exemple de manifest qui, je crois, devrait répondre à ta demande (je n'ai pas testé...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
    <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
        <security>
          <requestedPrivileges>
            <requestedExecutionLevel level='requireAdministrator' uiAccess='false' />
          </requestedPrivileges>
        </security>
      </trustInfo>
    </assembly>
    Salut Aniki, a tous

    Ce code fonctionne en VBA ?

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/08/2012, 13h56
  2. Réponses: 3
    Dernier message: 31/01/2011, 15h33
  3. Exécuter en tant qu'administrateur
    Par Upsilone dans le forum VB.NET
    Réponses: 1
    Dernier message: 14/08/2009, 22h13
  4. Exécuter en tant qu'administrateur
    Par muzele dans le forum Windows XP
    Réponses: 9
    Dernier message: 12/01/2008, 00h08
  5. Réponses: 0
    Dernier message: 21/10/2007, 16h44

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