OVH Cloud OVH Cloud

Jean Claude as tu essayé la fonction RegWrite modifiée ?

6 réponses
Avatar
Yvon
Bonsoir,

Ô Grand Sachem du script,

mon post était en erreur et l'erreur que j'ai décrite existe bien sans les
guillemets !!!

Set fso = Wscript.CreateObject("WScript.Shell")
fso.RegWrite
"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{450D8FBA-AD2
5-11D0-98A8-0800361B1103}\ShellFolder\Attributes",4031775092,"REG_DWORD"


Car avec les guillemets , le résultat est à 000000


Merci pour ta réponse éventuelle.

Yvon

6 réponses

Avatar
Jean-Claude BELLAMY
Dans le message news:4213c222$0$14678$ ,
Yvon s'est ainsi exprimé:

Bonsoir,

Ô Grand Sachem du script,
;-)


mon post était en erreur et l'erreur que j'ai décrite existe bien
sans les guillemets !!!

Set fso = Wscript.CreateObject("WScript.Shell")
fso.RegWrite
"HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerCLSID{450D8FBA-AD2
5-11D0-98A8-0800361B1103}ShellFolderAttributes",4031775092,"REG_DWORD"

Car avec les guillemets , le résultat est à 000000



Dans la série "Le Super PACQT" ....
("Piège à con qui tue") ...

moi aussi j'ai une erreur de débordement ...
..quand je transmets le DWORD en décimal, à savoir 4031775092

Ce nombre très grand a évoqué tout de suite chez moi quelque chose proche de
2^32
(4294967296)

J'ai donc eu l'idée de le convertir en hexadécimal : &HF0500174 (écriture
hexa en VB)
et là, le script marche au poil !

Si on veut conserver une écriture décimale, il faut remplacer le nombre par
son complément à 2 (plus exactement, à 2^32)
2^32 - 4031775092 = 263192204

Ce qui suit fonctionne et donne le même résultat :
(j'ai fractionné sur plusieurs lignes)

fso.RegWrite
"HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerCLSID
{450D8FBA-AD25-11D0-98A8-0800361B1103}ShellFolderAttributes",
-263192204,"REG_DWORD"


Alors, elle est pas belle la vie ? ;-)

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*

Avatar
Yvon
Bonsoir,

Bravôôôô et encore chapôôôô !!

Quelle perspicacité et quelles conaissances !

Vraiment je pense que tu es le meilleur du news. J'espère que tu continueras
longtemps comme ça, quand je serai à la retraite (je suis un admin
viellissant et de plus en Hal' Zaimer !) j'aurai sans doute souvent besoin
de tes lumières, que dis-je de tes phares à iode.

Plus sérieusement,
Merci encore pour ton aide

à bientôt et,oui,
Alors, elle est pas belle la vie ? ;-))






"Jean-Claude BELLAMY" a écrit dans le
message de news:u$
Dans le message news:4213c222$0$14678$ ,
Yvon s'est ainsi exprimé:

Bonsoir,

Ô Grand Sachem du script,
;-)


mon post était en erreur et l'erreur que j'ai décrite existe bien
sans les guillemets !!!

Set fso = Wscript.CreateObject("WScript.Shell")
fso.RegWrite

"HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerCLSID{450D8FBA-AD2


5-11D0-98A8-0800361B1103}ShellFolderAttributes",4031775092,"REG_DWORD"

Car avec les guillemets , le résultat est à 000000



Dans la série "Le Super PACQT" ....
("Piège à con qui tue") ...

moi aussi j'ai une erreur de débordement ...
..quand je transmets le DWORD en décimal, à savoir 4031775092

Ce nombre très grand a évoqué tout de suite chez moi quelque chose proche
de

2^32
(4294967296)

J'ai donc eu l'idée de le convertir en hexadécimal : &HF0500174 (écriture
hexa en VB)
et là, le script marche au poil !

Si on veut conserver une écriture décimale, il faut remplacer le nombre
par

son complément à 2 (plus exactement, à 2^32)
2^32 - 4031775092 = 263192204

Ce qui suit fonctionne et donne le même résultat :
(j'ai fractionné sur plusieurs lignes)

fso.RegWrite
"HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerCLSID
{450D8FBA-AD25-11D0-98A8-0800361B1103}ShellFolderAttributes",
-263192204,"REG_DWORD"


Alors, elle est pas belle la vie ? ;-)

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*





Avatar
Daniel92
http://groups.google.fr/groups?threadmB13c222$0$14678$

: Yvon lui disait :
: > Ô Grand Sachem du script, ;-)
: > mon post était en erreur et l'erreur que j'ai décrite existe bien
: > sans les guillemets !!!
: > fso.RegWrite
: > "HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerCLSID{450D8FBA-AD2
: > 5-11D0-98A8-0800361B1103}ShellFolderAttributes",4031775092,"REG_DWORD"

: Dans la série "Le Super PACQT" .... ("Piège à con qui tue") ...
: moi aussi j'ai une erreur de débordement ...
: ..quand je transmets le DWORD en décimal, à savoir 4031775092
:
: Ce nombre très grand a évoqué tout de suite chez moi quelque chose
: proche de 2^32 = (4294967296)
:
: J'ai donc eu l'idée de le convertir en hexadécimal : &HF0500174
: (écriture hexa en VB) et là, le script marche au poil !
:
: Si on veut conserver une écriture décimale, il faut remplacer le nombre par
: son complément à 2 (plus exactement, à 2^32)
: 2^32 - 4031775092 = 263192204
:
: Ce qui suit fonctionne et donne le même résultat :
: (j'ai fractionné sur plusieurs lignes)
:
: fso.RegWrite
: "HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerCLSID
: {450D8FBA-AD25-11D0-98A8-0800361B1103}ShellFolderAttributes",
: -263192204,"REG_DWORD"
:
: Alors, elle est pas belle la vie ? ;-)

** N'y aurait-il pas un petit bug-bug dans l'interpréteur de
VbScript qui ferait que les nombres supérieurs à 9 chiffres
doivent être remplacés par leur complément à 2^32
(le dixième "chiffre" ne devant servir que d'indicateur de signe) ?
Est-ce qu'il y a d'autres commandes de vbs qui ont le même pb?

(Est-ce que la première ArianeV aurait utilisé Vbs?)

:O)
Daniel.
====
Avatar
Yvon
Bonsoir,

Je le pense car le dword passé et sur 5 octets dont un le premier quartet
pour le signe exactement comme les nombres en BCD


a+


"Daniel92" a écrit dans le message de news:



http://groups.google.fr/groups?threadmB13c222$0$14678$

r

: Yvon lui disait :
: > Ô Grand Sachem du script, ;-)
: > mon post était en erreur et l'erreur que j'ai décrite existe bien
: > sans les guillemets !!!
: > fso.RegWrite
: >
"HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerCLSID{450D8FBA-AD2

: >
5-11D0-98A8-0800361B1103}ShellFolderAttributes",4031775092,"REG_DWORD"


: Dans la série "Le Super PACQT" .... ("Piège à con qui tue") ...
: moi aussi j'ai une erreur de débordement ...
: ..quand je transmets le DWORD en décimal, à savoir 4031775092
:
: Ce nombre très grand a évoqué tout de suite chez moi quelque chose
: proche de 2^32 = (4294967296)
:
: J'ai donc eu l'idée de le convertir en hexadécimal : &HF0500174
: (écriture hexa en VB) et là, le script marche au poil !
:
: Si on veut conserver une écriture décimale, il faut remplacer le nombre
par

: son complément à 2 (plus exactement, à 2^32)
: 2^32 - 4031775092 = 263192204
:
: Ce qui suit fonctionne et donne le même résultat :
: (j'ai fractionné sur plusieurs lignes)
:
: fso.RegWrite
: "HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerCLSID
: {450D8FBA-AD25-11D0-98A8-0800361B1103}ShellFolderAttributes",
: -263192204,"REG_DWORD"
:
: Alors, elle est pas belle la vie ? ;-)

** N'y aurait-il pas un petit bug-bug dans l'interpréteur de
VbScript qui ferait que les nombres supérieurs à 9 chiffres
doivent être remplacés par leur complément à 2^32
(le dixième "chiffre" ne devant servir que d'indicateur de signe) ?
Est-ce qu'il y a d'autres commandes de vbs qui ont le même pb?

(Est-ce que la première ArianeV aurait utilisé Vbs?)

:O)
Daniel.
=== >




Avatar
Th.A.C

...
Je le pense car le dword passé et sur 5 octets dont un le premier quartet
pour le signe exactement comme les nombres en BCD
...


petit extrait de l'aide vbscript:

"Integer Contains integer in the range -32,768 to 32,767."

et REG_DWORD est de type integer.

je suppose que dword est plutot de type Long (double mot?) et donc on a:
"Long Contains integer in the range -2,147,483,648 to 2,147,483,647."

Dans le même genre, le tetris de microsoft pour windows 3.x affichait
aussi des scores négatifs au dela de 32767...


--
__________________________________
www.cimes.fr
Centre pour l’Innovation et les Méthodes dans l’Économique et le Social

Avatar
Daniel92

: > pour le signe exactement comme les nombres en BCD

** Les principes de bases n'ont pas fondamentalement pas changé
depuis les cartes, bit de signe à 0 = "+", bit de signe à 1= "-"


: petit extrait de l'aide vbscript:
: "Integer Contains integer in the range -32,768 to 32,767."

** donc un mot de 16bit ou deux octets


: et REG_DWORD est de type integer.
: je suppose que dword est plutot de type Long (double mot?) et donc on a:

** Dword
A portion of memory, usually a variable, which has a length of four bytes.
The term dword is given to anything which is four bytes in length. Literally,
a dword is a "double word."
http://math.msu.su/~vfnik/WinApi/glossary.html

* mais c'est un détournement de vocabulaire par Microsoft... :O)

CDC utilisait déjà en 1977 dans ses ordinateurs des ' mots de 60 bits '
(on se demande bien pourquoi? puisqu'ils étaient divisés en octets) ,
une partie de l'équipe de Control Data est partie pour créer Cray et
donc le Cray One. L'architecture que met en application aujourd'hui
Microsoft pour ses O.S. ressemble comme deux gouttes d'eau
à celle de CDC de ... 1977.

Donc j'accorde :O) la définition double ' mot de 16 bits ' à
Microsoft pour définir DWORD...


: je suppose que dword est plutot de type Long ... et donc on a:

: "Long Contains integer in the range -2,147,483,648 to 2,147,483,647."

** Donc un mot de 32 bits avec 1 bit réservé pour le signe
le maximum étant sur 31 bits 2,147,483,647 , est-ce que cette
valeur constitue bien la limite avant de passer au complément à
2^32 en négatif dans l'instruction de Vbs ' fso.RegWrite ' ?

( Si Yvon pouvait faire l'essai car je ne suis pas encore très bon
en Vbs ... et n'est encore jamais écrit dans la base de Registre...)

Merci pour ta remarque Thierry,
Daniel.
====