Bonjour, cela fait plusieurs jours que je cherche à créer une clé registre dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
mais la methode que j'utilise ne fonctionne, pourtant elle fonctionne belle et bien dans HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run.Mon application fonctionne en administrateur(windows 7).
Voici le code que j'utilise, merci d'avance pour votre aide..
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Try
Dim CreateLocalMachine As Microsoft.Win32.RegistryKey = Registry.LocalMachine.CreateSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
Dim KeyExiste = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
If KeyExiste.GetValue(Application.ProductName) <> Application.ProductName Then '<> signifie différent
With CreateLocalMachine
.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
.SetValue(Application.ProductName, Application.ExecutablePath)
End With
Else
MsgBox("Clé existe déjà !")
End If
Catch ex As Exception
MessageBox.Show("Une erreur est survenue !")
End Try
End Sub
désolé je me suis mal exprimé, autant pour moi, je voulais dire que la méthode actuelle (voir code au dessus) que j'utilise ne fonctionne pas et je ne connais pas d'autre méthode. Si vous pouvez m'aidez svp.
Je viens de tester sur ma machine, en effet cela ne change rien. Car la clé de base dont tu te sers n'est pas en mode écriture (il faut donc ajouter le "True" à la première fonction, à savoir CreateSubKey, dans ce cas, cela fonctionne merveilleusement bien).
Mais pourquoi t'embêtes-tu à ouvrir trois clés différentes, lorsque faire
Fait tout ? À moins que la vérification de clé existante soit un prérequis obligatoire ?
Sachant que le champ My.Computer.Registry.LocalMachine est équivalent (en fait, il est identique) à [Microsoft.Win32.]Registry.LocalMachine, qui lui-même est défini par :
Public Shared ReadOnly LocalMachine As RegistryKey = RegistryKey.GetBaseKey(RegistryKey.HKEY_LOCAL_MACHINE)
Et la fonction RegistryKey.GetBaseKey crée automatiquement une clé avec un accès en écriture.
Note : je suis tout de même surpris par le fait que lorsqu'une clé est ouverte sans accès en écriture, le framework .NET ignore toutes les requêtes d'écriture silencieusement sans émettre le moindre avertissement. En général, c'est plutôt l'inverse, le moindre faux-pas et c'est l'ArgumentException dans ta face.
Je désespère, après avoir essayé ta méthode sa ne fonctionne toujours pas !! le message "La clé a été crée !" s'affiche mais la clé n'est pas créé réellement...
J'ai pas l'impression que tu ais compris l'importance de mon post....
La clef a bien été crée non pas dans le répertoire que tu indiques mais dans sa redirection automatique en 32 bits dont le chemin est indiqué dans le lien ci dessus.... ?
- Edité par breizhbugs 17 juin 2017 à 13:33:35
** La doc, c'est comme le PQ: ça sert à se démerder tout seul **
Oui excuse moi, j'avais vraiment pas compris la dernière fois ou tu voulais en venir, la clé à bien été créé dans HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run, merci beaucoup pour ton aide, mais pourquoi la clé n'est pas créé directement dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run, comme celle d'AvastUi ou plusieurs autres ??
Comme @breizhbugs l'a dit, Windows possède deux versions du registre (en tout cas pour HKLM). Comme ton application est probablement compilée en Any CPU, y'a des chances pour qu'elle tourne en 32. Ce qui fait que la clé est bien dans Wow6432Node.
Pour forcer l'utilisation de la ruche 64-bits. Note que ceci ne marchera pas si tu lances ton appli sur un Windows 32-bits.
Question : pourquoi diable veux-tu tant que ton application soit inscrite en démarrage dans la ruche 64-bits ? Ça ne changera rien sur le plan fonctionnel, le programme sera quand même exécuté au démarrage...
note: y a une fonction de l'api pour désactiver la redirection, mais je ne crois pas qu'elle soit intégrées a la classe registry de .net. Faut la pinvoke sinon. Peut être que des parametres sur certaines fonctions permettent d'indiquer avec quel registre travailler aussi. Bref Lire la doc ou accepter la redirection automatique.
zdimension a écrit:
Question : pourquoi diable veux-tu tant que ton application soit inscrite en démarrage dans la ruche 64-bits ? Ça ne changera rien sur le plan fonctionnel, le programme sera quand même exécuté au démarrage...
Je pense pas qu'il le veuille absolument. Il ne connaissait pas l'existence des deux ruches en fait d'ou son incompréhension sur ce qui se passait
- Edité par breizhbugs 17 juin 2017 à 14:38:48
** La doc, c'est comme le PQ: ça sert à se démerder tout seul **
D'accord, je comprend mieux maintenant, j'arrive enfin à créer la valeur dans les 2 clés Mais comment fait-on pour interdire la suppression de la clé ? un exemple:
j'ai désinstallé Avast et lorsque je me rend dans le registre, la clé AvastUi.exe existe encore et lorsque je veux la supprimer, un message m'interdit de le faire alors que je suis connecté en tant qu'administrateur.
I a un service qui tourne toujours sans doute et qui verifie en surveillant plusieurs reglages de l'ordi qu'aucun virus cherche à le désinstaller "contre son gré"
** La doc, c'est comme le PQ: ça sert à se démerder tout seul **
Créer une clé registre dans HKEY_LOCAL_MACHINE
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
zdimension - https://zdimension.fr/
zdimension - https://zdimension.fr/
zdimension - https://zdimension.fr/
zdimension - https://zdimension.fr/
zdimension - https://zdimension.fr/