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

VB.NET Discussion :

UAC et ecriture dans la base de registre


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2003
    Messages : 117
    Points : 68
    Points
    68
    Par défaut UAC et ecriture dans la base de registre
    Bonjour,

    Lord de l’exécution de mon programme, celui-ci doit écrire ds la base de registre.
    Si l'UAC est désactivée tout ce passe bien à l'inverse, j'ai une fenêtre d'autorisation qui apparait.
    J'utilise cette procédure qui permet normalement d’exécuter en tant qu'administrateur :
    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
    29
    30
    31
    32
     
    Private Sub AdminUACProcess(ByVal arg As String)
            Dim process As System.Diagnostics.Process = Nothing
            Dim processStartInfo As System.Diagnostics.ProcessStartInfo
     
            processStartInfo = New System.Diagnostics.ProcessStartInfo()
     
            processStartInfo.FileName = "regedit.exe"
     
            If System.Environment.OSVersion.Version.Major >= 6 Then ' Windows Vista or higher
                processStartInfo.Verb = "runas"
     
            Else
                ' No need to prompt to run as admin
            End If
     
            processStartInfo.Arguments = arg
            processStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal
            processStartInfo.UseShellExecute = True
     
            Try
                process = System.Diagnostics.Process.Start(processStartInfo)
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Finally
     
                If Not (process Is Nothing) Then
                    process.Dispose()
                End If
     
            End Try
        End Sub
    Mais ça ne marche pas, la fenêtre d'autorisation apparait toujours !!!

    Si quelqu'un pouvait m’éclairer sur où est mon erreur...

    Merci.

  2. #2
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Citation Envoyé par SoGood Voir le message
    Lord de l’exécution de mon programme, celui-ci doit écrire ds la base de registre.
    Pourquoi ne pas utiliser la classe prévue à cet effet : RegistryKey

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2003
    Messages : 117
    Points : 68
    Points
    68
    Par défaut
    Je n’utilise pas RegistryKey car j'ai un grand nombre de ligne de registre à entrer et je trouve que lancer un fichier .reg est plus rapide.
    Avec RegistryKey ça semple plutôt laborieux et très long à écrire.
    Mais je n'ai peut être pas tout compris !

  4. #4
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Citation Envoyé par SoGood Voir le message
    Je n’utilise pas RegistryKey car j'ai un grand nombre de ligne de registre à entrer et je trouve que lancer un fichier .reg est plus rapide.
    Avec RegistryKey ça semple plutôt laborieux et très long à écrire.
    Mais je n'ai peut être pas tout compris !
    Le problème c'est que pour lancer regedit il faut être Admin. Tu aura donc toujours l'UAC dans les pattes. Si tu n'est pas admin, il va demander les credentials et si tu es Admin il va te demander confirmation.

    Avec RegistryKey ca peut s'écrire en une ligne par clé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true).SetValue(Name, "titi");

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2003
    Messages : 117
    Points : 68
    Points
    68
    Par défaut
    Merci pour les infos.
    C'est un peu plus long mais au moins ça marche !!!

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par meziantou Voir le message
    Le problème c'est que pour lancer regedit il faut être Admin. Tu aura donc toujours l'UAC dans les pattes. Si tu n'est pas admin, il va demander les credentials et si tu es Admin il va te demander confirmation.

    Avec RegistryKey ca peut s'écrire en une ligne par clé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true).SetValue(Name, "titi");
    Salut meziantou

    Avec RegistryKey , est-ce qu'on a besoin de désactiver aussi l'UAC?

    Merci

  7. #7
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par meziantou Voir le message
    Le problème c'est que pour lancer regedit il faut être Admin. Tu aura donc toujours l'UAC dans les pattes. Si tu n'est pas admin, il va demander les credentials et si tu es Admin il va te demander confirmation.

    Avec RegistryKey ca peut s'écrire en une ligne par clé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true).SetValue(Name, "titi");
    bonjour,

    Pour que ton programme soit exécuté avec des priviléges administrateur il faut parametrer le niveau de privilege d execution (ou Manifest d assembly depuis les parametres du projet) ainsi lors de la 1ere execution du logiciel chez l utilisateur il lui sera demandé d accepter ou non !
    Toutes les actions necessitant des droits admin seront faite en toute transparence sans devoir modifier quoique ce soit dans le code.
    Il s' agit bien du parametrage UAC applicatif comme lorsqu un programme est executé avec un certificat numerique ou non.

    la procedure :

    http://www.developpez.net/forums/d12...p/#post7056421

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Points : 26
    Points
    26
    Par défaut
    Merci

    Je sous-entendais d’après le poste de meziantou que si on utiliser reg. (regedit) on devait avoir des privilèges administrateur alors que si on utiliser registryKey on n'a pas besoin des privilèges administrateur.

    En VBA c'est possible d'ajouter une clé sans privilèges administrateur ?

  9. #9
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par Quicksilvain Voir le message
    Merci

    Je sous-entendais d’après le poste de meziantou que si on utiliser reg. (regedit) on devait avoir des privilèges administrateur alors que si on utiliser registryKey on n'a pas besoin des privilèges administrateur.
    Absolument faux ! Sauf si l'utilisateur est connecté depuis un compte admin ou avec des droits spécifiques ! Et/ou bien sure si le développeur à coder l'application en paramétrant le manifest d'assembly et de fait que l'utilisateur exécutant ton programme accepte les modifications apportées à son Système en élevant le privilège lorsqu'il sera prompté. Ou encore que l'UAC est totalement désactivé.

    Citation Envoyé par Quicksilvain Voir le message
    En VBA c'est possible d'ajouter une clé sans privilèges administrateur ?
    Sur Windows, à moins de l'avoir explicitement décidé (l'utilisateur utilise un compte admin), il n'est absolument pas possible d'exécuter quoique ce soit en FULL RIGHTS !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/07/2009, 22h55
  2. [VB6]ecrire une chaine de byte dans la base de registre
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 17/12/2008, 10h50
  3. Ecriture dans la base de registre
    Par Thierry'' dans le forum VBA Access
    Réponses: 14
    Dernier message: 09/10/2008, 13h20
  4. Probleme ecriture dans la base de registre
    Par Deton@tor dans le forum C++Builder
    Réponses: 8
    Dernier message: 30/04/2008, 15h03
  5. Réponses: 16
    Dernier message: 22/03/2005, 21h57

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