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

Langage Delphi Discussion :

[D2010] Comment écrire dans HKEY_LOCAL_MACHINE sous Windows 7 ?


Sujet :

Langage Delphi

  1. #1
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 667
    Points : 7 002
    Points
    7 002
    Par défaut [D2010] Comment écrire dans HKEY_LOCAL_MACHINE sous Windows 7 ?
    Comment écrire dans HKEY_LOCAL_MACHINE (ou toutes autres opérations désormais interdites) sous Windows 7 ?
    (en étant un utilisateur normal au niveau droit).

    J'ai lu le tutoriel sur l'UAC (http://pascalfonteneau.developpez.co...phi/vista/uac/).
    J'ai créé le fichier manifest que j'ai mis à côté de l'exe, mais aucun changement.

    J'ai vu dans la discution (http://www.developpez.net/forums/d95...windows-7-uac/):
    Citation Envoyé par Franck SORIANO Voir le message
    Non, ce n'est pas possible. Tout le principe de l'UAC c'est que l'utilisateur doive systématiquement donner l'autorisation pour modifier le système.
    La seule façon de lancer une appli avec les droits admins sans qu'elle demande l'autorisation, c'est qu'elle soit elle-même lancée par une application qui a déjà effectuée l'élévation de privillège.
    La seule façon c'est ce fichier manifest ?

    Le fichier manifest permet l'effet décrit là (http://windows.developpez.com/faq/vi...ac_elever_fast) ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Ukraine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 162
    Points : 163
    Points
    163
    Par défaut
    Et pourquoi ne pas directement essayer d'élever les privilèges de ton application, ou du moins demander à l'utilisateur une élévation de privilèges.

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 743
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 743
    Points : 13 299
    Points
    13 299
    Par défaut
    Peu importe Seven ou antérieur, un utilisateur standard ne peut pas écrire dans HKLM.

    Le manifest sert simplement à définir l'accès souhaité et le cas échéant demander la confirmation à l'utilisateur. Mais s'il n'a pas les droits (puisque utilisateur standard), ça ne va rien changer à la donne, l'écriture sera toujours impossible

    Ce que dit Frank est de lancer une 2ème application depuis une 1ère exécutée par RunAs (sous un compte admin donc) et qui à déjà passé le contrôle UAC. Le 2ième processus héritant des autorisations du premier.

  4. #4
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 667
    Points : 7 002
    Points
    7 002
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Ce que dit Frank est de lancer une 2ème application depuis une 1ère exécutée par RunAs (sous un compte admin donc) et qui à déjà passé le contrôle UAC. Le 2ième processus héritant des autorisations du premier.
    J'ai fait une première application qui lance la deuxième par le RunAs de la faq (http://delphi.developpez.com/faq/?pa...cuterentantque).
    La deuxième s'exécute bien, mais n'a toujours pas de droit (donc ne fait rien et renvoit un message d'erreur).
    Bien sûr, j'utilise un compte administrateur dans le RunAs.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  5. #5
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 173
    Points
    4 173
    Par défaut
    C'est normal.
    La méthode donnée par la FAQ permet de lancer le deuxième processus avec un compte administrateur. En revanche, le deuxième processus se lance, mais sans faire l'élévation de privilège, donc la modification de HKEY_LOCAL_MACHINE n'est pas possible.

    Le problème, c'est qu'il n'est apparemment pas possible d'effectuer l'élévation de privilège avec CreateProcessWithLogon. (peut-être si l'exe lancé possède le manifeste qui demande obligatoirement les droits admins ?).
    Pour effectuer l'élévation de privilège, il faut utiliser le RunAsAdmin donné par Pascal Fonteneau dans son tutoriel.
    Le problème c'est qu'il n'est pas possible d'indiquer un mot de passe dans un ShellExecuteEx en runas... donc difficile de changer de compte utilisateur au passage...

    Une solution a essayer serait de passer par trois processus au lieu de deux :
    - Le premier fait le RunAs de la FAQ pour lancer le deuxième processus avec un compte Administrateur.
    - Le deuxième processus (qui possède alors un compte Admin) lance un troisième processus en faisant le RunAsAdmin pour demander l'élévation de privillège.

    Mais je ne suis pas sûr que ça marche non plus car il n'est pas impossible que ce type de chaînage soit interdit par Windows pour des raisons de sécurité...

    Après tu as d'autres solutions :
    Par exemple, passer par un service Windows qui s'exécute en permanence avec un compte administrateur. Lorsque ton appli a besoin de faire des modifs qui nécessite les droits admins, elle délègue le traitement au service Windows.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/02/2015, 14h48
  2. Réponses: 2
    Dernier message: 20/02/2008, 19h12
  3. comment installer turbo c sous windows ??????????
    Par amouna dans le forum Autres éditeurs
    Réponses: 8
    Dernier message: 27/10/2005, 02h16
  4. [XML] Comment écrire dans un xml??
    Par ffmlgraphics dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 05/07/2005, 10h10
  5. [JAR] Comment écrire dans un fichier properties dans un jar
    Par Alec6 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 05/10/2004, 15h16

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