Modifier une valeur du registre
Lyc@n
Messages postés
249
Statut
Membre
-
Lyc@n Messages postés 249 Statut Membre -
Lyc@n Messages postés 249 Statut Membre -
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
- Comment modifier une story sur 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!