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 :

Requested registry access is not allowed.


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Points : 56
    Points
    56
    Par défaut Requested registry access is not allowed.
    Bonjour,

    Je veux connecter à distance sur un PC pour récupérer des infos dans la clé "run".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     ConnectionOptions oConn = new ConnectionOptions();
                    oConn.Username = Environment.UserDomainName + "\\" + strAdmin;
                    oConn.Password = strPwd;
                    ManagementScope scope = new ManagementScope(@"\\" + lbPCName.Text + @"\root\default", oConn);
                    scope.Connect();
                    ManagementClass registry = new ManagementClass(scope, new ManagementPath("StdRegProv"), null);
     
                    if (is64bit)
                    { strKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, lbPCName.Text).OpenSubKey(RegRunKey64); }
     
    Ici - je reçois ce message "Requested registry access is not allowed." Je ne comprends rien.
                    else { strKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, lbPCName.Text).OpenSubKey(RegRunKey86); }
    Mon compte est admin local du PC, j'ai tous les droits pour accéder au PC.

    Merci

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Être membre du rôle administrateur n'est pas suffisant pour travailler avec HKCR ou encore avec HKLM, il faut en plus faire la demande d'élévation des privilèges au niveau de l'UAC. Pour se faire il faut mettre ceci dans le manifeste de l'application (app.manifest):

    Code XML : 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
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
      <assemblyIdentity version="1.0.0.0"
         processorArchitecture="X86" name="AdminApp" type="win32"/> 
      <description>Description of your application</description> 
      <!-- Identify the application security requirements. -->
      <ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft-com:asm.v2">
        <ms_asmv2:security>
          <ms_asmv2:requestedPrivileges>
            <ms_asmv2:requestedExecutionLevel
              level="requireAdministrator"
              uiAccess="false"/>
            </ms_asmv2:requestedPrivileges>
           </ms_asmv2:security>
      </ms_asmv2:trustInfo>
    </assembly>

    C'est équivalent à faire un click droit sur l'executable puis cliquer sur "Run as administrator"...

    Pour référence : Teach Your Apps To Play Nicely With Windows Vista User Account Control

    Bien entendu attention car avec ceci tout le code de l'executable va être exécuté avec cette élévation de privilèges. Il vaut peut-être mieux cibler l'élévation autour du code qui en a besoin uniquement. Autre option, déporter le code qui interagit avec HKCR/HKLM dans un exe a part, lui assigner un manifeste et lancer cet exécutable depuis ton application principale. C'est plus sécurisé.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Merci pour votre aide.

    Un .manifest peut s'utiliser dans une application Windows C# et en C# .NET ?

    Merci

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Oui c'est tout à fait compatible. Un manifeste peut être utilisé pour un exécutable, ou bien pour une DLL. Pour plus d'info voir ceci: Application Manifests.

    Le fichier doit suivre une convention de nommage, comme indiqué dans le lien ci-dessus vers MSDN.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Voici la situation, j'ai ajouté un app.manifest, je crois avoir fait ce qu'il fallait et j'ai toujours le même résultat.

    Cependant, ce qui m'embête, c'est que ça fonctionne sur certaines machines et non sur d'autres.

    Toutes les machines sont configurées de la même façon et la sécurité locale est également identique et le compte que j'utilise est administrateur local de tous ces portes.

    Voilà pourquoi je suis un peu perdu, à ce stade et en tenant compte que cela fonctionne pour plusieurs, je ne suis plus vraiment certain.

    Merci pour votre aide.

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Difficile de t'aider plus que ca sans avoir plus d'info... Que se passe-t-il quand ca ne fonctionne pas ? Tous les PC ont-ils le même OS ? Lequel ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. [Débutant] Requested registry access is not allowed.
    Par Whippet dans le forum C#
    Réponses: 0
    Dernier message: 23/01/2015, 13h44
  2. Réponses: 5
    Dernier message: 14/01/2013, 20h14
  3. Réponses: 4
    Dernier message: 25/04/2012, 09h10
  4. Réponses: 0
    Dernier message: 18/12/2007, 12h49
  5. Requested registry access is not allowed.
    Par abbd dans le forum Visual C++
    Réponses: 10
    Dernier message: 08/03/2007, 20h43

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