Placer un DWORD dans le registre avec une valeur au-delà de la limite acceptée

Il y a un problème que nous rencontrons où des valeurs DWORD dans HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall avec des données qui dépassent la limite supérieure d’une valeur DWORD (c’est-à-dire tout ce qui est supérieur à DEC 4294967295) causent l’échec de notre logiciel lors de l’analyse du registre car des valeurs aussi élevées devraient être stockées en tant que QWORD, pas DWORD. En conséquence, j’écris du PowerShell pour détecter la présence de ces valeurs invalides et les signaler pour qu’elles puissent être corrigées.

Il n’est pas clair d’où viennent ces valeurs cassées, mais elles surviennent assez souvent pour que cela soit un problème.

Ce dont j’ai besoin maintenant, c’est d’un moyen de placer ces valeurs invalides dans le registre afin de pouvoir vérifier que mes contrôles fonctionnent réellement. En substance, j’ai besoin de casser mon registre afin de le réparer.

Voici ce que j’ai essayé :

  • PowerShell : “Value was either too large or
    too small for a UInt32.”

  • Regedit : Physiquement impossible d’entrer trop de chiffres

  • Exporter/Modifier/Implanter un fichier .REG : Les données sont importées mais n’apparaissent pas dans le registre

C’est bien que ces outils aient une protection intégrée, mais il y a clairement un moyen de le faire sinon nous n’aurions pas à nous soucier de résoudre ce problème. Quelqu’un peut-il proposer un moyen de mettre ces données invalides dans le registre ?

La réponse de Velvet est correcte. J’ai donné cela à un développeur qui l’a transformé en application en ligne de commande qui place les données du registre dans un emplacement prédéfini et cela casse effectivement le registre.

Je pourrais publier l’application ici, mais j’ai découvert après avoir expérimenté que j’étais capable d’exporter les informations cassées sous forme de fichier .REG et de les réimporter pour casser le registre avec succès, rendant cela inutile.

Voici le contenu du fichier REG :

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Test123]
"DisplayName"="Invalid Software"
"Version"=hex(4):bf,02,00,00,01,00,00,00

La raison pour laquelle j’ai dit dans le message original que cela ne pouvait pas être fait est que je créais un fichier REG cassé de manière incorrecte. Ceci est un fichier REG correctement incorrect, cassé non cassé, qui échouera la tâche avec succès.