et voici le message d'erreur : U:Untitled1.vbs(15, 117) Erreur de compilation Microsoft VBScript: Fin d'instruction attendue
Une idée ?
Oui : c'est simple, on ne peut pas lire ou écrire des REG_BINARY de plus de 1 octet en VBS "de base" !
De plus, tu a commis une erreur de syntaxe : WshShell.RegWrite "HKLM....Map","00..00","REG_BINARY" La valeur dans le cas de reg_binary étant obligatoirement un entier, ce ne peut pas être une chaine ! WshShell.RegWrite "HKLM....Map",0,"REG_BINARY"
Et si tu veux transmettre des REG_BINARY de plus de 1 octet, tu DOIS OBLIGATOIREMENT passer par autre chose, en particulier la classe "StdRegProv" de WMI, et la méthode "SetBinaryValue" :
NB: je n'ai fais aucun test de validité. A toi de peaufiner tout çà ...
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org http://www.bellamyjc.org *
Dans le message news:15a001c46f30$2d3ea4d0$a501280a@phx.gbl ,
Sylvain <s.bedard.nosp@m.saq.qc.ca> s'est ainsi exprimé:
Salut a tous
j'ai une cle de registre a créer (voici la ligne):
et voici le message d'erreur :
U:Untitled1.vbs(15, 117) Erreur de compilation Microsoft
VBScript: Fin d'instruction attendue
Une idée ?
Oui : c'est simple, on ne peut pas lire ou écrire des REG_BINARY de plus de
1 octet en VBS "de base" !
De plus, tu a commis une erreur de syntaxe :
WshShell.RegWrite "HKLM....Map","00..00","REG_BINARY"
La valeur dans le cas de reg_binary étant obligatoirement un entier, ce ne
peut pas être une chaine !
WshShell.RegWrite "HKLM....Map",0,"REG_BINARY"
Et si tu veux transmettre des REG_BINARY de plus de 1 octet, tu DOIS
OBLIGATOIREMENT passer par autre chose, en particulier la classe
"StdRegProv" de WMI, et la méthode "SetBinaryValue" :
NB: je n'ai fais aucun test de validité.
A toi de peaufiner tout çà ...
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org Jean-Claude.Bellamy@wanadoo.fr *
JC.Bellamy@free.fr
et voici le message d'erreur : U:Untitled1.vbs(15, 117) Erreur de compilation Microsoft VBScript: Fin d'instruction attendue
Une idée ?
Oui : c'est simple, on ne peut pas lire ou écrire des REG_BINARY de plus de 1 octet en VBS "de base" !
De plus, tu a commis une erreur de syntaxe : WshShell.RegWrite "HKLM....Map","00..00","REG_BINARY" La valeur dans le cas de reg_binary étant obligatoirement un entier, ce ne peut pas être une chaine ! WshShell.RegWrite "HKLM....Map",0,"REG_BINARY"
Et si tu veux transmettre des REG_BINARY de plus de 1 octet, tu DOIS OBLIGATOIREMENT passer par autre chose, en particulier la classe "StdRegProv" de WMI, et la méthode "SetBinaryValue" :
NB: je n'ai fais aucun test de validité. A toi de peaufiner tout çà ...
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org http://www.bellamyjc.org *
scraper
Salut à Jean-Claude BELLAMY qui dans son post news: nous a écrit/répondu :
Et si tu veux transmettre des REG_BINARY de plus de 1 octet, tu DOIS OBLIGATOIREMENT passer par autre chose, en particulier la classe "StdRegProv" de WMI, et la méthode "SetBinaryValue" :
si l'ordi hôte n'a pas WMI installé, une solution donnée par Jean (et qui
fonctione ma foi plutôt bien :-) :
créer un fichier reg temporaire le faire exécuter par le script le détruire
--
Attention ! Adresse mail invalide ... Pour me contacter, cliquez sur le lien ci-dessous: http://scraper.chez.tiscali.fr/contact.htm
scraper
Salut à Jean-Claude BELLAMY qui dans son post
news:OqjqfwzbEHA.1048@tk2msftngp13.phx.gbl
nous a écrit/répondu :
Et si tu veux transmettre des REG_BINARY de plus de 1 octet, tu DOIS
OBLIGATOIREMENT passer par autre chose, en particulier la classe
"StdRegProv" de WMI, et la méthode "SetBinaryValue" :
si l'ordi hôte n'a pas WMI installé, une solution donnée par Jean (et qui
fonctione ma foi plutôt bien :-) :
créer un fichier reg temporaire
le faire exécuter par le script
le détruire
--
Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm
Salut à Jean-Claude BELLAMY qui dans son post news: nous a écrit/répondu :
Et si tu veux transmettre des REG_BINARY de plus de 1 octet, tu DOIS OBLIGATOIREMENT passer par autre chose, en particulier la classe "StdRegProv" de WMI, et la méthode "SetBinaryValue" :
si l'ordi hôte n'a pas WMI installé, une solution donnée par Jean (et qui
fonctione ma foi plutôt bien :-) :
créer un fichier reg temporaire le faire exécuter par le script le détruire
--
Attention ! Adresse mail invalide ... Pour me contacter, cliquez sur le lien ci-dessous: http://scraper.chez.tiscali.fr/contact.htm
scraper
Jean-Claude BELLAMY
Dans le message news:% , scraper s'est ainsi exprimé:
Salut à Jean-Claude BELLAMY qui dans son post news: nous a écrit/répondu :
Et si tu veux transmettre des REG_BINARY de plus de 1 octet, tu DOIS OBLIGATOIREMENT passer par autre chose, en particulier la classe "StdRegProv" de WMI, et la méthode "SetBinaryValue" :
si l'ordi hôte n'a pas WMI installé,
Si WMI n'est pas installé d'origine, cela signifie que l'on est sous
Win95/98 ou NT4 C'est quand même de plus en plus rare...
une solution donnée par Jean (et qui fonctione ma foi plutôt bien :-) :
créer un fichier reg temporaire le faire exécuter par le script le détruire
Oui, tu as raison de le rappeler, je pratique aussi cette méthode, mais c'est un peu galère que le codage Binaire -> chaines hexadécimal dans un .REG
J'ai d'ailleurs écrit deux fonctions qui retournent la chaine complète à écrire dans le .REG à partir du nom de la valeur et , au choix : - d'un tableau d'octets - d'une chaine unique en hexadécimal
------------ couper ici ------------ function BinaryValueFromArray(Name,ValueArray) str=chr(34) & Name & chr(34) & "=hex:" & VBCRLF line="" lmax=Ubound(ValueArray) For i = 0 To lmax c=ValueArray(i) If line<>"" Then line=line & "," hc=Hex(c) If c<&H10 Then hc="0" & hc line=line & hc If len(line)>v or i=lmax Then If i<lmax Then line=line & "," str=str & line & VBCRLF line="" End If Next BinaryValueFromArray=str end function
function BinaryValueFromString(Name,HexStr) str=chr(34) & Name & chr(34) & "=hex:" & VBCRLF line="" lmax=int(len(HexStr)/2) If lmax*2<>len(HexStr) Then wscript.echo "La longueur de la chaine doit être paire" wscript.quit End If For i = 1 To lmax hc=mid(HexStr,i*2-1,2) If line<>"" Then line=line & "," line=line & hc If len(line)>v or i=lmax Then If i<lmax Then line=line & "," str=str & line & VBCRLF line="" End If Next BinaryValueFromString=str end function ------------ couper ici ------------
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org http://www.bellamyjc.org *
Dans le message news:%23Ofwz2zbEHA.3096@tk2msftngp13.phx.gbl ,
scraper <scraper@pasdespam.fr> s'est ainsi exprimé:
Salut à Jean-Claude BELLAMY qui dans son post
news:OqjqfwzbEHA.1048@tk2msftngp13.phx.gbl
nous a écrit/répondu :
Et si tu veux transmettre des REG_BINARY de plus de 1 octet, tu DOIS
OBLIGATOIREMENT passer par autre chose, en particulier la classe
"StdRegProv" de WMI, et la méthode "SetBinaryValue" :
si l'ordi hôte n'a pas WMI installé,
Si WMI n'est pas installé d'origine, cela signifie que l'on est sous
Win95/98 ou NT4
C'est quand même de plus en plus rare...
une solution donnée par Jean (et
qui fonctione ma foi plutôt bien :-) :
créer un fichier reg temporaire
le faire exécuter par le script
le détruire
Oui, tu as raison de le rappeler, je pratique aussi cette méthode, mais
c'est un peu galère que le codage Binaire -> chaines hexadécimal dans un
.REG
J'ai d'ailleurs écrit deux fonctions qui retournent la chaine complète à
écrire dans le .REG à partir du nom de la valeur et , au choix :
- d'un tableau d'octets
- d'une chaine unique en hexadécimal
------------ couper ici ------------
function BinaryValueFromArray(Name,ValueArray)
str=chr(34) & Name & chr(34) & "=hex:" & VBCRLF
line=""
lmax=Ubound(ValueArray)
For i = 0 To lmax
c=ValueArray(i)
If line<>"" Then line=line & ","
hc=Hex(c)
If c<&H10 Then hc="0" & hc
line=line & hc
If len(line)>v or i=lmax Then
If i<lmax Then line=line & ","
str=str & line & VBCRLF
line=""
End If
Next
BinaryValueFromArray=str
end function
function BinaryValueFromString(Name,HexStr)
str=chr(34) & Name & chr(34) & "=hex:" & VBCRLF
line=""
lmax=int(len(HexStr)/2)
If lmax*2<>len(HexStr) Then
wscript.echo "La longueur de la chaine doit être paire"
wscript.quit
End If
For i = 1 To lmax
hc=mid(HexStr,i*2-1,2)
If line<>"" Then line=line & ","
line=line & hc
If len(line)>v or i=lmax Then
If i<lmax Then line=line & ","
str=str & line & VBCRLF
line=""
End If
Next
BinaryValueFromString=str
end function
------------ couper ici ------------
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org Jean-Claude.Bellamy@wanadoo.fr *
JC.Bellamy@free.fr
Dans le message news:% , scraper s'est ainsi exprimé:
Salut à Jean-Claude BELLAMY qui dans son post news: nous a écrit/répondu :
Et si tu veux transmettre des REG_BINARY de plus de 1 octet, tu DOIS OBLIGATOIREMENT passer par autre chose, en particulier la classe "StdRegProv" de WMI, et la méthode "SetBinaryValue" :
si l'ordi hôte n'a pas WMI installé,
Si WMI n'est pas installé d'origine, cela signifie que l'on est sous
Win95/98 ou NT4 C'est quand même de plus en plus rare...
une solution donnée par Jean (et qui fonctione ma foi plutôt bien :-) :
créer un fichier reg temporaire le faire exécuter par le script le détruire
Oui, tu as raison de le rappeler, je pratique aussi cette méthode, mais c'est un peu galère que le codage Binaire -> chaines hexadécimal dans un .REG
J'ai d'ailleurs écrit deux fonctions qui retournent la chaine complète à écrire dans le .REG à partir du nom de la valeur et , au choix : - d'un tableau d'octets - d'une chaine unique en hexadécimal
------------ couper ici ------------ function BinaryValueFromArray(Name,ValueArray) str=chr(34) & Name & chr(34) & "=hex:" & VBCRLF line="" lmax=Ubound(ValueArray) For i = 0 To lmax c=ValueArray(i) If line<>"" Then line=line & "," hc=Hex(c) If c<&H10 Then hc="0" & hc line=line & hc If len(line)>v or i=lmax Then If i<lmax Then line=line & "," str=str & line & VBCRLF line="" End If Next BinaryValueFromArray=str end function
function BinaryValueFromString(Name,HexStr) str=chr(34) & Name & chr(34) & "=hex:" & VBCRLF line="" lmax=int(len(HexStr)/2) If lmax*2<>len(HexStr) Then wscript.echo "La longueur de la chaine doit être paire" wscript.quit End If For i = 1 To lmax hc=mid(HexStr,i*2-1,2) If line<>"" Then line=line & "," line=line & hc If len(line)>v or i=lmax Then If i<lmax Then line=line & "," str=str & line & VBCRLF line="" End If Next BinaryValueFromString=str end function ------------ couper ici ------------
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org http://www.bellamyjc.org *