Modifier une valeur (binaire) dans la base de registre
Résolulittle boy62 Messages postés 3606 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
- Modifier une story facebook - Guide
- Binaire - 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.
++