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 :

OpenSCMManager en mode user


Sujet :

Windows

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 48
    Points
    48
    Par défaut OpenSCMManager en mode user
    Bonjour,

    Sous Windows Seven:

    J'ai créer un projet MSI par InstallShield 2009 , particuliérement il execute un programme à moi permettant d'installer un service en appelant l'API OpenSCMManager (management service).

    J'arrive à executer le MSI sans passer par "executé en tant qu'administrateur" , mais quand le MSI fini par executer le programme en question , ce programme en question va installer un service Windows mais j'ai un code erreur 5 (accés refusé) retourner dans la fonction OpenSCMManager (management service).

    Tout ce passe bien si j'execute mon MSI en passant par "Executer en tant qu'administrateur".

    Comment installer un service sans passer par "Executer en tant qu'administrateur" ?

    Merci

  2. #2
    Membre averti Avatar de Jenna
    Inscrit en
    Décembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2009
    Messages : 272
    Points : 339
    Points
    339
    Par défaut
    Citation Envoyé par sivaller Voir le message
    Comment installer un service sans passer par "Executer en tant qu'administrateur" ?
    C'est un peu normal, l'installation d'un service demande un minimum de privilèges. Tu vas écrire (indirectement) dans une partie de la base de registres qui est réservée à l'administrateur. Essaye avec un "power user" mais je pense que cela ne sera pas suffisant.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 48
    Points
    48
    Par défaut
    "power user" , c'est à dire ?

  4. #4
    Membre averti Avatar de Jenna
    Inscrit en
    Décembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2009
    Messages : 272
    Points : 339
    Points
    339
    Par défaut
    Citation Envoyé par sivaller Voir le message
    "power user" , c'est à dire ?
    Utilisateur avex pouvoir, c'est un groupe d'utilisateurs qui a des privilèges un peu plus élevés que l'utilisateur standard

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 589
    Points
    41 589
    Par défaut
    Je me rappelle avoir eu quelques problèmes sous XP familial avec ce groupe, car il n'y existe pas.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 48
    Points
    48
    Par défaut
    Je voudrais executer une serie de ligne de code du genre opentoken
    pour passer l'execution une partie de mon code du mode user en mode super user "executer en mode administrateur" et l'inverse afin que la fonction API puisse s'executer correctement en mode user

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 589
    Points
    41 589
    Par défaut
    Un processus, une fois lancé, ne peut pas faire d'élévation de privilège: Tu es obligé de passer par un autre processus (comme un exécutable spécial que tu aurais extrait).

    Et pour enfoncer le clou, tu ne pourras pas, de manière 100% stable, attendre la fin du programme élevé que tu auras démarré: La fonction pour lancer avec élévation ne retourne pas de handle de processus. Le seul moyen pour un programme non-élevé d'exécuter de manière synchrone un programme élevé est de passer par un composant COM... sauf qu'il faut l'avoir installé en élevé avant.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 48
    Points
    48
    Par défaut
    j'ai vu ça :

    DWORD CUtils::AdjustPrivileges()
    {
    DWORD dwRetour = ERROR_SUCCESS;
    HANDLE process = GetCurrentProcess();

    // get a token to adjust privileges
    HANDLE token = NULL;
    if(!OpenProcessToken(process, TOKEN_ADJUST_PRIVILEGES, &token))
    dwRetour = GetLastError();
    else
    {
    // set new privileges
    static TCHAR *P[] = {
    SE_CREATE_TOKEN_NAME,
    SE_ASSIGNPRIMARYTOKEN_NAME,
    SE_TCB_NAME,
    SE_LOAD_DRIVER_NAME,
    SE_DEBUG_NAME,
    SE_TAKE_OWNERSHIP_NAME,

    };

    TOKEN_PRIVILEGES * Priv;
    TCHAR buf[1024] = {0};

    Priv = (PTOKEN_PRIVILEGES) buf;
    Priv->PrivilegeCount = 0;

    for(int j = 0; j < sizeof P/sizeof P[0]; ++j)
    {
    if(LookupPrivilegeValue(NULL, P[j], &Priv->Privileges[0].Luid))
    {
    Priv->Privileges[j].Attributes = SE_PRIVILEGE_ENABLED;
    Priv->PrivilegeCount++;
    }
    else dwRetour = GetLastError();
    }
    // modify token privileges
    if(!AdjustTokenPrivileges(token, FALSE, Priv, 0, NULL, NULL))
    dwRetour = GetLastError();
    }

    return dwRetour;
    }


    je vais l'essayer demain.
    Sous Windows Seven , il pourrait afficher une boite de dialogue de confirmation

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 589
    Points
    41 589
    Par défaut
    Ce n'est pas une élévation de privilège: Ce code ne fait qu'activer un privilège que le jeton d'accès du processus possède déjà.

Discussions similaires

  1. Driver Atheros en mode user pour kernel 3.10.2
    Par iam_emin dans le forum Linux
    Réponses: 1
    Dernier message: 25/07/2013, 10h56
  2. Simuler un noyau en mode user
    Par progfou dans le forum C
    Réponses: 12
    Dernier message: 08/02/2010, 20h00
  3. installer QT en mode user
    Par Hisoka_Hunter dans le forum Qt
    Réponses: 1
    Dernier message: 09/08/2009, 02h45
  4. Intercepter le trafic socket en mode user ?
    Par Pizza Royale dans le forum Linux
    Réponses: 11
    Dernier message: 08/09/2008, 15h18
  5. Réponses: 11
    Dernier message: 09/07/2005, 09h47

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