Modifier une valeur du registre
Lyc@n
Messages postés
221
Date d'inscription
Statut
Membre
Dernière intervention
-
Lyc@n Messages postés 221 Date d'inscription Statut Membre Dernière intervention -
Lyc@n Messages postés 221 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde!
Je travaille actuellement sur un logiciel capable de modifier le fond d'écran de démarrage. Donc voilà, pour Windows "autorise" la modification du fond d'écran de démarrage, il faut modifier une valeur du registre, celle-ci:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background\OEMBackground
Il faut que cette valeur soit une hexadécimale égale à 1, petit screen:
http://data.imagup.com/member2/1169896437_aidevb.jpg
Et voilà le code qui doit passer cette valeur vers une hexadécimale égale à 1:
Mais après l'exécution de ce code, la valeur n'est pas modifié, j'ai regardé avec RegEdit. Quelqu'un pourrait il m'aider s'il vous plait? Me dire quelle est l'erreur dans mon code ou comment faire pour modifier une valeur du registre? Merci beaucoup!
Je travaille actuellement sur un logiciel capable de modifier le fond d'écran de démarrage. Donc voilà, pour Windows "autorise" la modification du fond d'écran de démarrage, il faut modifier une valeur du registre, celle-ci:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background\OEMBackground
Il faut que cette valeur soit une hexadécimale égale à 1, petit screen:
http://data.imagup.com/member2/1169896437_aidevb.jpg
Et voilà le code qui doit passer cette valeur vers une hexadécimale égale à 1:
Imports Microsoft.Win32 'pour utiliser le registre Try Dim regOEMBackground As RegistryKey Dim keyValue As String keyValue = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Authentication\\LogonUI\\Background" regOEMBackground = (Registry.LocalMachine.OpenSubKey(keyValue, True)) regOEMBackground.SetValue("OEMBackground", 1) Dim getOEMBackgroundValue As Integer = 0 getOEMBackgroundValue = regOEMBackground.GetValue("OEMBackground", 0) regOEMBackground.Close() TextBox1.Text = getOEMBackgroundValue.ToString Catch ex As Exception MsgBox(ex.ToString) End Try
Mais après l'exécution de ce code, la valeur n'est pas modifié, j'ai regardé avec RegEdit. Quelqu'un pourrait il m'aider s'il vous plait? Me dire quelle est l'erreur dans mon code ou comment faire pour modifier une valeur du registre? Merci beaucoup!
A voir également:
- Modifier une valeur du registre
- Registre windows - Guide
- Modifier dns - Guide
- Modifier liste déroulante excel - Guide
- Modifier une story facebook - Guide
- Modifier extension fichier - Guide
7 réponses
Bonjour,
Pour modifier le fond d'écran j'emploi (en VB6) la procédure suivante.
où AffiType est le paramètre pour le mode d'affichage, Étirer, Image ou mosaïque.
Tu devrais facilement retrouver les API, sinon tu dis je te les passerais en VB6
Si ça peu t'aidé !
A+
Pour modifier le fond d'écran j'emploi (en VB6) la procédure suivante.
Public Function ChangeFondEcran(FichierImage As String, Optional AffiType As Integer = 2) Dim Txt1 As String, Txt2 As String Dim R As Long Dim hand As Long ' Gestion de l'erreur si pas d'image On Error GoTo Fin ' Mettre les options dans les régistres Select Case AffiType Case 0 ' Centrer Txt1 = "0": Txt2 = "0" Case 1 ' Mosaïque Txt1 = "0": Txt2 = "1" Case 2 ' Etirer Txt1 = "2": Txt2 = "0" End Select R = RegCreateKey(HKEY_CURRENT_USER, "Control Panel\Desktop", hand) R = RegSetValueEx(hand, "WallpaperStyle", 0, REG_SZ, ByVal Txt1, Len(Txt1)) R = RegCloseKey(hand) 'Exit Function R = RegCreateKey(HKEY_CURRENT_USER, "Control Panel\Desktop", hand) R = RegSetValueEx(hand, "TileWallpaper", 0, REG_SZ, ByVal Txt2, Len(Txt2)) R = RegCloseKey(hand) SystemParametersInfo SPI_SETDESKWALLPAPER, 0&, FichierImage, SPIF_UPDATEINIFILE Or _ SPIF_SENDWININICHANGE Fin: End Function
où AffiType est le paramètre pour le mode d'affichage, Étirer, Image ou mosaïque.
Tu devrais facilement retrouver les API, sinon tu dis je te les passerais en VB6
Si ça peu t'aidé !
A+
Je pense à autre chose...
Clic droit sur l'icone de Visual Basic -> ouvrir en tant qu'administrateur.
Ensuite tu charge ton appli et tu l'exécute.
Note : pour modifier une clé registre faut être inscrit comme admin.
Clic droit sur l'icone de Visual Basic -> ouvrir en tant qu'administrateur.
Ensuite tu charge ton appli et tu l'exécute.
Note : pour modifier une clé registre faut être inscrit comme admin.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon, j'ai un peu examiner le truc...
Ta fonction OpenSubKey ouvre une clé notamment la clé "Background"
Mais au départ elle n'existe pas, faut donc la créer, la fonction CreateSubKey crée la clé si elle n'existe pas et l'ouvre.
Ainsi la clé est créée et validée, le textbox renvoi bien la valeur.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ta fonction OpenSubKey ouvre une clé notamment la clé "Background"
Mais au départ elle n'existe pas, faut donc la créer, la fonction CreateSubKey crée la clé si elle n'existe pas et l'ouvre.
Ainsi la clé est créée et validée, le textbox renvoi bien la valeur.
regOEMBackground = (Registry.LocalMachine.CreateSubKey(keyValue))
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Excuse moi si je t'ai pas répondu assez tôt! J'ai vus que tu m'a fait remarqué cette erreur dans un autre sujet. Ce n'est pas un problème de politesse c'est juste que je n'avais pas vu ton post. Alors j'ai regardé ton code, mais à la base, cette clé existe déjà et ne devrai pas avoir à être créé. Mis je vais essayer ton code dans deux ou trois tests, et je te dirait ce que ça me donne au plus vite!
J'ai essayé ca:
Mais là le programme à un comportement très étrange, il fait comme si le registre était modifié alors qu'il n'a pas bougé, quelqu'un aurais une idée s'il vous plait? Merci!
Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background") If My.Computer.Registry.GetValue(RegKey, "OEMBackground", "None") = "0" Then My.Computer.Registry.SetValue(RegKey, "OEMBackground", "1", RegistryValueKind.DWord) End If
Mais là le programme à un comportement très étrange, il fait comme si le registre était modifié alors qu'il n'a pas bougé, quelqu'un aurais une idée s'il vous plait? Merci!