OVH Cloud OVH Cloud

importer fichier .reg

6 réponses
Avatar
Titeuf [VB.Net 2005]
Bonsoir,

Je doit importer une valeur dans le registre
J'ai essayé avec la classe Registry mais j'obtiens une erreur de grandeur de
valeur.
La valeur que je doit écrire est de type dword, sa valeur est 4294967197
donc inférieur à 2^32 (4 294 967 296) alors je ne comprend pas pourquoi j'ai
cette erreur !
N'ayant trouvé aucune solution je voudrais importer un fichier .reg. Cela
marche juste à la 1 execution du .reg, les autres fois ou je veux importer
cela ne marche plus !!!

Si quelqu'un à une solution à me proposer avec l'utilisation d'un process
pour faire avec reg.exe il est mon sauveur car franchement je désespère !!!
Ou dans Vb2005 y a t-il une méthode pour importer un fichier du registre ?
Ou par miracle si quelqu'un à une astuce pour faire passer ma valeur dans la
base avec du code je préfèrerais cela fait plus propre qu'un fichier .reg
Dans l'attente d'une réponse merci d'avance




Appel de ma fonction pour executer un process
LittleProcess("reg.exe", "import " & ControlChars.Quote & "c:\cache 01.reg"
& ControlChars.Quote)

Pour cela j'utilise les process voici ma fonction ci-dessous

Public Sub LittleProcess(ByVal AppToExecute As String, ByVal Argument As
String, Optional ByVal UseShell As Boolean = False, Optional ByVal
CreateWindows As Boolean = False)

Dim pProc As New Diagnostics.Process

With pProc.StartInfo
.Arguments = Argument
.CreateNoWindow = Not CreateWindows
.FileName = AppToExecute
.UseShellExecute = UseShell
.RedirectStandardOutput = True
End With

pProc.Start()

Debug.WriteLine(pProc.StandardOutput.ReadToEnd)

pProc.Close()

End Sub

6 réponses

Avatar
Fabien Bezagu
Titeuf,

Ta valeur dword est inférieure à 2^32 mais elle est supérieure à 2^31...Il
est possible que le problème vienne de là, les entiers de la base de
registre étant peut-être signés.

Essaye de passer ta valeur en signé, on sait jamais ;-)

Fabien


"Titeuf [VB.Net 2005]" a écrit dans le message de news:

Bonsoir,

Je doit importer une valeur dans le registre
J'ai essayé avec la classe Registry mais j'obtiens une erreur de grandeur
de valeur.
La valeur que je doit écrire est de type dword, sa valeur est 4294967197
donc inférieur à 2^32 (4 294 967 296) alors je ne comprend pas pourquoi
j'ai cette erreur !
N'ayant trouvé aucune solution je voudrais importer un fichier .reg. Cela
marche juste à la 1 execution du .reg, les autres fois ou je veux importer
cela ne marche plus !!!

Si quelqu'un à une solution à me proposer avec l'utilisation d'un process
pour faire avec reg.exe il est mon sauveur car franchement je désespère
!!!
Ou dans Vb2005 y a t-il une méthode pour importer un fichier du registre ?
Ou par miracle si quelqu'un à une astuce pour faire passer ma valeur dans
la base avec du code je préfèrerais cela fait plus propre qu'un fichier
.reg
Dans l'attente d'une réponse merci d'avance




Appel de ma fonction pour executer un process
LittleProcess("reg.exe", "import " & ControlChars.Quote & "c:cache
01.reg" & ControlChars.Quote)

Pour cela j'utilise les process voici ma fonction ci-dessous

Public Sub LittleProcess(ByVal AppToExecute As String, ByVal Argument
As String, Optional ByVal UseShell As Boolean = False, Optional ByVal
CreateWindows As Boolean = False)

Dim pProc As New Diagnostics.Process

With pProc.StartInfo
.Arguments = Argument
.CreateNoWindow = Not CreateWindows
.FileName = AppToExecute
.UseShellExecute = UseShell
.RedirectStandardOutput = True
End With

pProc.Start()

Debug.WriteLine(pProc.StandardOutput.ReadToEnd)

pProc.Close()

End Sub



Avatar
Titeuf [VB.Net 2005]
est bien justement c'est ce que je me m'étais dis alors j'ai essayé de passé
en UInteger mais la classe registry apparement ne supporte pas ses valeurs
car j'ai l'erreur "The type of the value object did not match the specified
RegistryValueKind or the object could not be properly converted."
En vb6 j'avais eu ce problème j'aurais pensé que cela aurait été possible en
.net mais apparement....



"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de news:

Titeuf,

Ta valeur dword est inférieure à 2^32 mais elle est supérieure à 2^31...Il
est possible que le problème vienne de là, les entiers de la base de
registre étant peut-être signés.

Essaye de passer ta valeur en signé, on sait jamais ;-)

Fabien


"Titeuf [VB.Net 2005]" a écrit dans le message de news:

Bonsoir,

Je doit importer une valeur dans le registre
J'ai essayé avec la classe Registry mais j'obtiens une erreur de grandeur
de valeur.
La valeur que je doit écrire est de type dword, sa valeur est 4294967197
donc inférieur à 2^32 (4 294 967 296) alors je ne comprend pas pourquoi
j'ai cette erreur !
N'ayant trouvé aucune solution je voudrais importer un fichier .reg. Cela
marche juste à la 1 execution du .reg, les autres fois ou je veux
importer cela ne marche plus !!!

Si quelqu'un à une solution à me proposer avec l'utilisation d'un process
pour faire avec reg.exe il est mon sauveur car franchement je désespère
!!!
Ou dans Vb2005 y a t-il une méthode pour importer un fichier du registre
?
Ou par miracle si quelqu'un à une astuce pour faire passer ma valeur dans
la base avec du code je préfèrerais cela fait plus propre qu'un fichier
.reg
Dans l'attente d'une réponse merci d'avance




Appel de ma fonction pour executer un process
LittleProcess("reg.exe", "import " & ControlChars.Quote & "c:cache
01.reg" & ControlChars.Quote)

Pour cela j'utilise les process voici ma fonction ci-dessous

Public Sub LittleProcess(ByVal AppToExecute As String, ByVal Argument
As String, Optional ByVal UseShell As Boolean = False, Optional ByVal
CreateWindows As Boolean = False)

Dim pProc As New Diagnostics.Process

With pProc.StartInfo
.Arguments = Argument
.CreateNoWindow = Not CreateWindows
.FileName = AppToExecute
.UseShellExecute = UseShell
.RedirectStandardOutput = True
End With

pProc.Start()

Debug.WriteLine(pProc.StandardOutput.ReadToEnd)

pProc.Close()

End Sub







Avatar
Titeuf [VB.Net 2005]
J'ai réessayé ce matin avec l'import et cela a l'air de marché !
je vais laissé comme ca
Si je trouve une solution pour faire passer une valeur supérieur à 2^31 je
la posterais
Merci fabien pour ton aide :)
Avatar
Fabien Bezagu
J'aime pas rester sur un échec. J'ai essayé d'écrire ton nombre dans la base
de registre et ça fonctionne. Comme je te disais, l'idée est de passer sur
un entier signé, avec une petite opération au préalable.

Dim num1 As UInt32 = 4294967197
Dim num2 As Integer = (CType(-(UInt32.MaxValue - num1), Integer) - 1)
Dim key1 As RegistryKey = Registry.CurrentUser.OpenSubKey("test", True)
key1.SetValue("Toto", num2, RegistryValueKind.DWord)

Fabien

"Titeuf [VB.Net 2005]" a écrit dans le message de news:

est bien justement c'est ce que je me m'étais dis alors j'ai essayé de
passé en UInteger mais la classe registry apparement ne supporte pas ses
valeurs car j'ai l'erreur "The type of the value object did not match the
specified RegistryValueKind or the object could not be properly
converted."
En vb6 j'avais eu ce problème j'aurais pensé que cela aurait été possible
en .net mais apparement....



"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de
news:
Titeuf,

Ta valeur dword est inférieure à 2^32 mais elle est supérieure à
2^31...Il est possible que le problème vienne de là, les entiers de la
base de registre étant peut-être signés.

Essaye de passer ta valeur en signé, on sait jamais ;-)

Fabien


"Titeuf [VB.Net 2005]" a écrit dans le message de
news:
Bonsoir,

Je doit importer une valeur dans le registre
J'ai essayé avec la classe Registry mais j'obtiens une erreur de
grandeur de valeur.
La valeur que je doit écrire est de type dword, sa valeur est 4294967197
donc inférieur à 2^32 (4 294 967 296) alors je ne comprend pas pourquoi
j'ai cette erreur !
N'ayant trouvé aucune solution je voudrais importer un fichier .reg.
Cela marche juste à la 1 execution du .reg, les autres fois ou je veux
importer cela ne marche plus !!!

Si quelqu'un à une solution à me proposer avec l'utilisation d'un
process pour faire avec reg.exe il est mon sauveur car franchement je
désespère !!!
Ou dans Vb2005 y a t-il une méthode pour importer un fichier du registre
?
Ou par miracle si quelqu'un à une astuce pour faire passer ma valeur
dans la base avec du code je préfèrerais cela fait plus propre qu'un
fichier .reg
Dans l'attente d'une réponse merci d'avance




Appel de ma fonction pour executer un process
LittleProcess("reg.exe", "import " & ControlChars.Quote & "c:cache
01.reg" & ControlChars.Quote)

Pour cela j'utilise les process voici ma fonction ci-dessous

Public Sub LittleProcess(ByVal AppToExecute As String, ByVal Argument
As String, Optional ByVal UseShell As Boolean = False, Optional ByVal
CreateWindows As Boolean = False)

Dim pProc As New Diagnostics.Process

With pProc.StartInfo
.Arguments = Argument
.CreateNoWindow = Not CreateWindows
.FileName = AppToExecute
.UseShellExecute = UseShell
.RedirectStandardOutput = True
End With

pProc.Start()

Debug.WriteLine(pProc.StandardOutput.ReadToEnd)

pProc.Close()

End Sub











Avatar
Titeuf [VB.Net 2005]
Je vais regarder ton code pour comprendre
J'aime pas non plus rester sur un échec mais la je commençais à désespérer !
Mille merci pour ta solution !!!! :)


"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de news:
%23RL%
J'aime pas rester sur un échec. J'ai essayé d'écrire ton nombre dans la
base de registre et ça fonctionne. Comme je te disais, l'idée est de
passer sur un entier signé, avec une petite opération au préalable.

Dim num1 As UInt32 = 4294967197
Dim num2 As Integer = (CType(-(UInt32.MaxValue - num1), Integer) - 1)
Dim key1 As RegistryKey = Registry.CurrentUser.OpenSubKey("test", True)
key1.SetValue("Toto", num2, RegistryValueKind.DWord)

Fabien



Avatar
TroXsA - [VB.NET-2005]
Une simple commande de type shell ou un simple
process avec les parametres qui va bien
__________________________________________
C:Documents and Settingstest-d>reg /?

Outil de Registre de la console pour Windows - version 3.0
Copyright (C) Microsoft Corp. 1981-2001. Tous droits réservés


REG Opération [liste_paramètres]

Opération [ QUERY | ADD | DELETE | COPY |
SAVE | LOAD | UNLOAD | RESTORE |
COMPARE | EXPORT | IMPORT ]

Code de retour : (à l'exception de REG COMPARE)

0 - Réussite
1 - Échec

Pour obtenir de l'aide sur un type d'opération spécifique :

REG Opération /?

Exemples :

REG QUERY /?
REG ADD /?
REG DELETE /?
REG COPY /?
REG SAVE /?
REG RESTORE /?
REG LOAD /?
REG UNLOAD /?
REG COMPARE /?
REG EXPORT /?
REG IMPORT /?
___________________________________________

Je pense qu'il y a tout ce qui faut dedans


--
TroXsA
http://cerbermail.com/?rIXgaw9Xsl
"Titeuf [VB.Net 2005]" a écrit dans le message de news:
%
J'ai réessayé ce matin avec l'import et cela a l'air de marché !
je vais laissé comme ca
Si je trouve une solution pour faire passer une valeur supérieur à 2^31 je
la posterais
Merci fabien pour ton aide :)