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# Discussion :

C# Enregistrer dans HKLM avec l'UAC : Escalade de privilege


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut C# Enregistrer dans HKLM avec l'UAC : Escalade de privilege
    Bonjour,

    Quelqu'un peut il me conseiller sur l'enregistrement d'une clé dans regedit dans HKLM avec l'UAC (Windows 2008), si possible il faut que le code soit générique et compatible Windows 2003.
    Lorsque l'UAC est activé, comment faire de l'escalation de privilege ?

    merci !

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    Punaise je vois pas de truc simple :

    1 ere solution possible: lancer en process start un processus qui à comme propriété "lancer en administrateur'
    2eme solution : injecter dans le processus courant les droits d'administrateur, et si possible les desactiver tout de suite après l'action...

    bon pour le moment j'obtiens ce fabuleux message:
    System.Security.SecurityException: Accès au registre demandé non autorisé.
    à System.ThrowHelper.ThrowSecurityException(ExceptionResource resource)
    à Microsoft.Win32.RegistryKey.InternalOpenSubKey(String name, RegistryKeyPermissionCheck permissionCheck, Int32 rights)
    à Microsoft.Win32.RegistryKey.OpenSubKey(String name, RegistryKeyPermissionCheck permissionCheck, RegistryRights rights)
    avec ce simple code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                string dbmReg = @"Software\MyCompany\MyProduct";
                using (RegistryKey key = Registry.LocalMachine.OpenSubKey(dbmReg, RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl))
                {
                    key.SetValue("titi", "toto");
                }

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    Bon si y a mieux je preneur:

    http://stackoverflow.com/questions/2...ion-in-c-sharp
    Code : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
        bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator);
     
        if (!hasAdministrativeRight)
        {
            RunElevated(Application.ExecutablePath);
            this.Close();
            Application.Exit();
        }
     
    private static bool RunElevated(string fileName)
    {
        //MessageBox.Show("Run: " + fileName);
        ProcessStartInfo processInfo = new ProcessStartInfo();
        processInfo.Verb = "runas";
        processInfo.FileName = fileName;
        try
        {
            Process.Start(processInfo);
            return true;
        }
        catch (Win32Exception)
        {
            //Do nothing. Probably the user canceled the UAC window
        }
        return false;
    }
    il faut faire un process start avec en argument "runas"...

    Si y a mieux je suis preneur...
    car c 'est vraiment pas terrible

    on ne peut pas accorder temporairement les droits ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par alavoler Voir le message
    on ne peut pas accorder temporairement les droits ?
    Je ne crois pas... soit le process démarre avec les privilèges, soit il ne peut pas du tout les avoir

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    tomlev
    ralala... dommage
    je pense aussi que c est pas possible mais bon...
    Bonne soirée à toi !

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    Y a peut etre une astuce plus propre:

    générer un fichier .reg dans le répertoire Temporaire à partir d'un template:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Windows Registry Editor Version 5.00
     
    [HKEY_LOCAL_MACHINE\SOFTWARE\{0}MyCompany\MyProduct]
    "titi"="{1}"

    remplacer {0} par Wow6432Node\ si 64 bit
    et {1} par la valeur voulu

    lancer le reg qui demande la confirmation de l'UAC + un warning sur la modification regedit...
    et bingo !

    tomlev : toi qui est souvent de bon conseils, qu est ce que tu en penses ?

Discussions similaires

  1. ajouter valeur dans HKLM avec activedirectory/vbs
    Par titi04 dans le forum VBScript
    Réponses: 2
    Dernier message: 18/10/2010, 11h54
  2. Réponses: 1
    Dernier message: 02/10/2010, 09h00
  3. Enregistrements dans table avec COPY
    Par Yoite dans le forum PostgreSQL
    Réponses: 12
    Dernier message: 27/08/2009, 13h14
  4. Enregistrement dans BDD avec boucle: Error!
    Par tryks dans le forum Langage
    Réponses: 8
    Dernier message: 24/05/2009, 17h32
  5. Réponses: 4
    Dernier message: 28/04/2006, 23h21

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