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++Builder Discussion :

Lancé une commande avec des privilèges [Système/Fichiers/API]


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut Lancé une commande avec des privilèges
    Bonjour,

    J'utilise une classe d'une dll .NET (C#) dans une application fait avec C++Builder en utilisant COMInterop.

    Quand je vais distribuer l'application, il va me falloir inscrire automatiquement l'assembly (la dll) dans le GAC.
    Je voulais utiliser la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system((dotnetpath + "RegAsm.exe malib.dll /tlb:malib.tlb /codebase").t_str());
    Est-ce que la commande system va fonctionner ?
    Parce qu'il me semble que pour effectuer cette commande, il faut avoir certains droits (être admin ou peut-être utilisateur avec pouvoir).
    Comment je peux faire pour lancer cette commande avec des droits suffisants ?

    Un peu comme font certains programmes, c'est à dire que si le contrôle des utilisateurs est actif, l'écran se fige et demande à l'utilisateur de donner les droits pour cette action.

    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Personne n'a une solution ?

    Pour l'instant, j'ai utiliser un try catch pour voir s'il y a une erreur et si l'erreur est toujours présente après un certain temps, je crée un fichier bat et j'indique à l'utilisateur de le lancer avec les droits administrateurs.
    Mais c'est pas très élégant.

  3. #3
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Merci!

    Une fois de plus, tes conseils sont très utiles.
    Ce code à l'air de fonctionner. Plus qu'à tester sur un windows 7 avec le contrôle des comptes actif.

    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    bool __fastcall TSpeech::RunAsAdmin(HWND hWnd, LPTSTR lpFile, LPTSTR lpParameters)
    {
    SHELLEXECUTEINFO sei;
    ZeroMemory(&sei, sizeof(sei));
    sei.cbSize = sizeof(SHELLEXECUTEINFOW);
    sei.hwnd = hWnd;
    sei.fMask = SEE_MASK_FLAG_DDEWAIT | SEE_MASK_FLAG_NO_UI;
    sei.lpVerb = _TEXT("runas");
    sei.lpFile = lpFile;
    sei.lpParameters = lpParameters;
    sei.nShow = SW_SHOWNORMAL;
    if (!ShellExecuteEx(&sei))
       {
       return false;
       }
    return true;
    }

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/10/2009, 09h02
  2. Creer une requete avec des LEFT JOIN et des GRO
    Par donbuz dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/09/2004, 15h53
  3. [MFC] creer une liste avec des check????
    Par ginounet dans le forum MFC
    Réponses: 4
    Dernier message: 16/06/2004, 11h47
  4. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

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