Donner le droit de modifier une clé du registre [Résolu]

cs_LycanOSX 58 Messages postés mardi 21 septembre 2010Date d'inscription 14 juillet 2013 Dernière intervention - 12 déc. 2012 à 01:18 - Dernière réponse : cs_LycanOSX 58 Messages postés mardi 21 septembre 2010Date d'inscription 14 juillet 2013 Dernière intervention
- 8 janv. 2013 à 20:29
Bonjour tout le monde! J'ai actuellement besoin de modifier une valeur du registre avec mon logiciel, donc voici mon code:

Dim key As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background")
key.SetValue("OEMBackground", "1", RegistryValueKind.DWord)
key.Flush()
key.Close()


Le code semble marcher, mais lors de l’exécution il bloque sur la 2eme ligne en disant: "L'exception UnauthorizedException n'a pas été gérée, impossible d'écrire dans la clé de Registre.". Je pense que mon logiciel n'a pas le droit de modifier cette clé de registre, je suis pourtant sur le compte administrateur et ça ne marche pas même quand je fait clic droit > Exécuter en tant qu’administrateur. Donc je voudrais savoir comment corriger cette erreur, comment donner le droit à l'utilisateur du logiciel de modifier cette clé. Merci infiniment! :)

PS: Excusez moi si je me trompe de section, mais je vois pas ou je peut poster ça sinon.
Afficher la suite 

Votre réponse

21 réponses

Meilleure réponse
cs_LycanOSX 58 Messages postés mardi 21 septembre 2010Date d'inscription 14 juillet 2013 Dernière intervention - 12 déc. 2012 à 21:44
3
Merci
J'ai trouvé un solution un peut bancale au problème, si quelqu'un à le même bug que moi, utiliser ce programme et modifié le:
LIEN
Contentez vous d'y coller votre code , votre interface et de modifier le nom et information, merci à PHILOUVB pour ce code!

Merci cs_LycanOSX 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_LycanOSX
Utilisateur anonyme - 12 déc. 2012 à 12:49
0
Merci
Bonjour,

Propriétés du projet / onglet application.
Cliquer sur afficher les paramètres windows.
remplacer :
 <requestedExecutionLevel level="asInvoker" uiAccess="false" />

par :
<requestedExecutionLevel  level="requireAdministrator"  uiAccess="false" />

VS va redémarrer en mode administrateur.
Lorsque tu compilera ton projet, ces paramètres seront pris en compte et ton appli demandera ses droits à chaque démarrage.
Commenter la réponse de Utilisateur anonyme
cs_LycanOSX 58 Messages postés mardi 21 septembre 2010Date d'inscription 14 juillet 2013 Dernière intervention - 12 déc. 2012 à 13:02
0
Merci
Merci beaucoup pour ta réponse.

Mais ça ne semble pas marcher et j'ai toujours le droit à la même erreur, d’ailleurs, je me suis trompé, ce n'est pas l'exception "UnauthorizedException", mais "UnauthorizedAccessException", donc je n'ai toujours pas le droit de modifier cette clé du registre. j'ai donc essayé le code suivant:

Try

            Dim rs As New RegistrySecurity()
            Dim user As String = Environment.UserDomainName & "" & Environment.UserName

            rs = New RegistrySecurity()
            rs.AddAccessRule(New RegistryAccessRule(user, _
               RegistryRights.SetValue, _
              AccessControlType.Allow))


            Dim key As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background")
            key.SetAccessControl(rs)
            key.SetValue("OEMBackground", "1", RegistryValueKind.DWord)
            key.Flush()
            key.Close()

        Catch ex As Exception
            MsgBox(ex.Message & "; " & ex.Data.ToString & "; " & ex.HelpLink & "; " & ex.Source & "; " & ex.StackTrace & "; " & ex.TargetSite.ToString & ".")
        End Try


Mais ça ne semble pas marcher non plus. Je ne comprend pas comment me donner le droit de modifier cette clé. Je ne sait pas si vous savez vous servir de RegistrySecurity parce que j'ai peut être fait une erreur. Merci encore.
Commenter la réponse de cs_LycanOSX
Utilisateur anonyme - 12 déc. 2012 à 13:04
0
Merci
Normalement, tu dois vois dans la barre de titre de l'ide visual basic, la mention administrateur. Est-ce le cas ?
Commenter la réponse de Utilisateur anonyme
cs_LycanOSX 58 Messages postés mardi 21 septembre 2010Date d'inscription 14 juillet 2013 Dernière intervention - 12 déc. 2012 à 13:16
0
Merci
Oui, ça m'indique bien que je suis en administrateur.
Commenter la réponse de cs_LycanOSX
Utilisateur anonyme - 12 déc. 2012 à 13:21
0
Merci
Peut-être en désactivant les paramètres de sécurité ClickOnce (Onglet sécurité)
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 12 déc. 2012 à 13:21
0
Merci
C'est sur quel OS ?
Commenter la réponse de Utilisateur anonyme
cs_LycanOSX 58 Messages postés mardi 21 septembre 2010Date d'inscription 14 juillet 2013 Dernière intervention - 12 déc. 2012 à 13:36
0
Merci
Je travaille sous Windows 7 Édition Familiale Premium 64-bit SP1.
Commenter la réponse de cs_LycanOSX
cs_LycanOSX 58 Messages postés mardi 21 septembre 2010Date d'inscription 14 juillet 2013 Dernière intervention - 12 déc. 2012 à 13:38
0
Merci
Et ClickOnce est déjà inactif.
Commenter la réponse de cs_LycanOSX
Utilisateur anonyme - 12 déc. 2012 à 13:50
0
Merci
Tu peux essayer ceci pour w7:
Dim key As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)
key = key.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background")
'... suite de ton code
Commenter la réponse de Utilisateur anonyme
cs_LycanOSX 58 Messages postés mardi 21 septembre 2010Date d'inscription 14 juillet 2013 Dernière intervention - 12 déc. 2012 à 14:00
0
Merci
Merci encore, j'ai essayé ce code mais toujours le même problème, exactement la même erreur sur la même ligne:

Dim key As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)
key = key.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background")
key.SetValue("OEMBackground", "1", RegistryValueKind.DWord)
key.Flush()
key.Close()
Commenter la réponse de cs_LycanOSX
Utilisateur anonyme - 12 déc. 2012 à 14:01
0
Merci
Et bien je n'ai plus d'idées, j'ai épuisé tous les stratagèmes.
Bonne soirée quand même
Commenter la réponse de Utilisateur anonyme
cs_LycanOSX 58 Messages postés mardi 21 septembre 2010Date d'inscription 14 juillet 2013 Dernière intervention - 12 déc. 2012 à 14:08
0
Merci
Merci pour ton aide! Bien que le problème ne soit pas encore résolut, apprécie ton geste. Je vais voir si quelqu'un d'autre vient poster quelque chose d'autre sur le sujet parce que j'ai essayé tout ce que je pouvait, et n'étant pas un pro du VB, je pense pas trouver la solution moi même. En tout cas merci beaucoup!
Commenter la réponse de cs_LycanOSX
cs_LycanOSX 58 Messages postés mardi 21 septembre 2010Date d'inscription 14 juillet 2013 Dernière intervention - 12 déc. 2012 à 15:17
0
Merci
Chose assez étrange, j'ai réussi à modifier la clé de registre en modifiant le code suivant:
LIEN
Et ça marche très bien dans ce code avec la ligne suivante:
My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background", "OEMBackground", "1", RegistryValueKind.DWord)

J'ai donc copié cette ligne dans mon code et il ne se passe rien! La clé n'est pas odifié alors que dans l'autre code, celui que j'ai téléchargé et modifié, ça marche avec la même ligne de code! Je ne comprend pas!
Commenter la réponse de cs_LycanOSX
Utilisateur anonyme - 13 déc. 2012 à 21:39
0
Merci
J'ai trouvé un solution un peut bancale au problème
La vérité est ailleurs dans le reste de ton code. Et ce n'est pas bien de se contenter d'une 'solution bancale' alors que le fait de rechercher la véritable cause de l'erreur te serait bien plus profitable.
Bon week end quand même
Commenter la réponse de Utilisateur anonyme
cs_LycanOSX 58 Messages postés mardi 21 septembre 2010Date d'inscription 14 juillet 2013 Dernière intervention - 28 déc. 2012 à 19:17
0
Merci
J'ai cherché dans le code, mais vraiment il y à aucune différence! Dans tout, j'ai du passer 2 heures à tout regarder je comprend pas. Merci quand même!
Commenter la réponse de cs_LycanOSX
Utilisateur anonyme - 28 déc. 2012 à 20:33
0
Merci
C'est pour cela qu'on a inventé le mode 'pas à pas' (F8) ainsi que les espions. Compare les valeurs entre le code fonctionnel et l'autre.
Bon courage
Commenter la réponse de Utilisateur anonyme
cs_LycanOSX 58 Messages postés mardi 21 septembre 2010Date d'inscription 14 juillet 2013 Dernière intervention - 8 janv. 2013 à 18:22
0
Merci
Je ne comprend pas trop la fonction de F8 comme tu le dit, tu pourrait expliquer s'il te plait? Merci beaucoup!
Commenter la réponse de cs_LycanOSX
cs_LycanOSX 58 Messages postés mardi 21 septembre 2010Date d'inscription 14 juillet 2013 Dernière intervention - 8 janv. 2013 à 19:15
0
Merci
Je viens de reprendre le code que j'avais fait de manière bancale et je l'ai mis dans un nouveau projet, et je ne peut toujours pas modifier le registre! Là je ne comprend absolument pas, pourtant je lance bien l'application en tant qu'administrateur et je n'ai vu nul pars qu'il faut faire une manipulation spéciale pour autoriser l'application à utiliser le registre, là je ne comprend pas du tout et j'ai bossé au moins 2 mois sur le logiciel, et impossible qu'il puisse écrire ou lire correctement dans le registre!
Commenter la réponse de cs_LycanOSX
Utilisateur anonyme - 8 janv. 2013 à 20:10
0
Merci
Bonjour,

C'est pour cela qu'on a inventé le mode 'pas à pas' (F8) ainsi que les espions.


Petite précision, dans VS2012, avec l'IDE "harmonisée", le pas à pas c'est F11
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.