Modifier une valeur (binaire) dans la base de registre
Résolulittle boy62 Messages postés 4393 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
En VB.Net je souhaite créer un script (avec interace), pour pouvoir déplacer la barre des tâches.
Pour cela, je dois modifier une valeur de type binaire dans la base de registre.
Je n'y arrive pas.
Du coup, je suis passé par la création d'un fichier REG et l'import via ce scriot.
Ca fonctionne.
Mais je désire néanmoins comprendre pourquoi je n'y arrive pas.
Voici le code de la fonction :
Private Sub EnHaut(valeur)
Dim position = valeur.Remove(0, 2)
position = Regex.Replace(position, ".{2}", "$0,")
position = position.Remove(position.Length - 1)
MsgBox(position)
Dim uBinary = New Byte() {position} ', System.Globalization.NumberStyles.HexNumber)}
Dim keys As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRectsLegacy", True)
keys.SetValue("Settings", uBinary)
MsgBox("fin")
End Sub
Le souci est lié à la syntaxe de "New Byte"
Car si je met en clair, sans mettre de variable déclarée : la valeur est bien modifié dans la base de registre.
En gros, si je met cela, ça fonctionne : Dim uBinary = New Byte() {1,2,3,4,5,6,7,8}
Merci pour vos lumières; je pense qu'elles me seront utiles pour combler cette lacune.
Je ne serais pas si le code complet vous sera utile, mais le voici :
Imports Microsoft.Win32
Imports System.Buffers
Imports System.IO
Imports System.Runtime.Serialization.Formatters
Imports System.Text.RegularExpressions
Imports System.Windows.Forms.VisualStyles.VisualStyleElement
Public Class Form1
ReadOnly SSTUCKRECTSHKEY = "HKEY_CURRENT_USER\Softaware\Microsoft\Windows\CurrentVersion\Explorer\StuckRectsLegacy"
ReadOnly valeur_haut = "0x30000000feffffff02000000010000003e0000001e0000000000000000000000800700001e0000006000000001000000"
ReadOnly valeur_bas = "0x30000000feffffff02000000030000003e0000001e000000000000001a04000080070000380400006000000001000000"
ReadOnly valeur_gauche = "0x30000000feffffff02000000000000003e0000001e00000000000000000000003e000000380400006000000001000000"
ReadOnly valeur_droite = "0x30000000feffffff02000000020000003e0000001e000000420700000000000080070000380400006000000001000000"
ReadOnly DebutFichierReg = "Windows Registry Editor Version 5.00" & vbCr & "[" & SSTUCKRECTSHKEY & "]" & vbCr & """Settings""=hex:"
ReadOnly FichierReg As String = System.IO.Path.GetTempPath() & "\FichierReg.reg"
Private Sub image_haut_Click(sender As Object, e As EventArgs) Handles image_haut.Click
EnHaut(valeur_haut)
'BougeTaBarre(valeur_haut)
End Sub
Private Sub image_bas_Click(sender As Object, e As EventArgs) Handles image_bas.Click
BougeTaBarre(valeur_bas)
End Sub
Private Sub image_gauche_Click(sender As Object, e As EventArgs) Handles image_gauche.Click
BougeTaBarre(valeur_gauche)
End Sub
Private Sub image_droite_Click(sender As Object, e As EventArgs) Handles image_droite.Click
BougeTaBarre(valeur_droite)
End Sub
Private Sub EnHaut(valeur)
Dim position = valeur.Remove(0, 2)
position = Regex.Replace(position, ".{2}", "$0,")
position = position.Remove(position.Length - 1)
MsgBox(position)
Dim uBinary = New Byte() {position} ', System.Globalization.NumberStyles.HexNumber)}
Dim keys As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRectsLegacy", True)
keys.SetValue("Settings", uBinary)
MsgBox("fin")
End Sub
Private Sub BougeTaBarre(valeur)
'' If My.Computer.FileSystem.FileExists(FichierReg) Then My.Computer.FileSystem.DeleteFile(FichierReg)
Dim position = valeur.Remove(0, 2)
position = Regex.Replace(position, ".{2}", "$0,")
position = position.Remove(position.Length - 1)
Dim ContenuFichierReg = DebutFichierReg & position
Dim file As New System.IO.StreamWriter(FichierReg, True)
file.Write(ContenuFichierReg)
file.Dispose()
file.Close()
Dim myProcess As Process = New Process()
myProcess.StartInfo.UseShellExecute = False
myProcess.StartInfo.FileName = "regedit.exe"
myProcess.StartInfo.Arguments = "/s " & Chr(34) & FichierReg & Chr(34) & " & exit"
myProcess.Start()
Dim myProcesses() As Process = Process.GetProcessesByName("explorer")
For Each Process In myProcesses
Process.Kill()
Next
End Sub
End Class
A bientot
Thomas.
Windows / Opera 90.0.4480.117
- Modifier une valeur (binaire) dans la base de registre
- Base de registre - Guide
- Modifier dns - Guide
- Modifier liste déroulante excel - Guide
- Binaire - Guide
- Comment modifier une story sur facebook - Guide
1 réponse
Lu"
Résolu.
J'ai trouvé ceci : https://www.vbforums.com/showthread.php?627621-Setting-Registry-Values-with-Binary-Value-Kind&p=3882405&viewfull=1#post3882405
et en effet, ce bout de code m'a aidé :
Dim hexString As String = "1A,2B,3C,4D,5E,6F,70"
Dim bytes As Byte() = hexString.Split(","c).Select(Function(s) Convert.ToByte(s, 16)).ToArray(
J'ai donc fait ceci, comme fonction :
Private Sub BougeTaBarre(valeur)
Dim position As String = valeur.Remove(0, 2)
position = Regex.Replace(position, ".{2}", "$0,")
position = position.Remove(position.Length - 1)
Dim bytes As Byte() = position.Split(","c).Select(Function(s) Convert.ToByte(s, 16)).ToArray()
Dim keys As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRectsLegacy", True)
keys.SetValue("Settings", bytes)
Dim myProcesses() As Process = Process.GetProcessesByName("explorer")
For Each Process In myProcesses
Process.Kill()
Next
End Sub
Ca fonctionne.
++