Problema con valor de registro

Como indica el nombre del foro en el moveremos todos los temas de dudas que se resuelvan con exito .
Este foro no tendra permisos de escritura.
Hola de nuevo, como mencioné en mi post anterior, estoy tratando de hacer un patch para el pes 2012, ya las acciones están buenas y hacen lo que quiero menos por un detalle, necesito que la app cargue y consulte una valor en el registro que tiene que ver con la versión del juego, la idea es que si es la versión standar (1.00.0000) active el label 2 para que permita instalar, sino que apague el label y cambie el texto a "actualizado a la v1.01". El problema es que al ejecutar el proyecto mínima y sencillamente no hace lo que le pido, probé reconstruyendo el código desde el principio con solo 2 líneas, DisplayVersion= Registry.GetValue y LabelSetText ("label2", DisplayVersion) y cuando lo ejecuto en el label no me muestra nada, aparece el espacio vacío, qué puede ser?

aquí muestro mi código:
DisplayVersion = Registry.GetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Products\\890A737E161FF6B4FA2268AA3EF4F6DB\\InstallProperties", "DisplayVersion", false);
if DisplayVersion == "1.00.0000" then
Label.SetText("Label2", "Actualizar a la v1.01")
Label.SetEnabled("Label2", true)
else if DisplayVersion == "1.01.0000" then
Label.SetText("Label2", "Actualizado a la v1.01")
Label.SetEnabled("Label2", false)
Label.SetPos("label2", 210, 252)
else
Label.SetText("Label2", "Actualizado")
Label.SetEnabled("Label2", false)
Label.SetPos("label2", 270, 252)
Label.SetEnabled("Label3", false)
end
end


Ahí añadí una tercera condición en caso de que el juego esté actualizado a una versión superior, sin embargo, probándolo así encontré que dice "actualizado" es decir que cumple con la tercera condición pero no sé por qué si el valor del registro dice 1.01.0000 debería cumplir la segunda.

Aquí les dejo los valores del registro por si alguien quiere crearse el .reg y exportarlo para probar.
Spoiler: Mostrar
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\890A737E161FF6B4FA2268AA3EF4F6DB\InstallProperties]
"RegOwner"="Lothan"
"RegCompany"="P.I.M.P."
"ProductID"="7X9K-YYES-64AV-4HAN-3JRN"
"LocalPackage"="C:\\Windows\\Installer\\146da66c.msi"
"AuthorizedCDFPrefix"=""
"Comments"=""
"Contact"=""
"DisplayVersion"="1.01.0000"
"HelpLink"=""
"HelpTelephone"=""
"InstallDate"="20111004"
"InstallLocation"="C:\\Program Files (x86)\\KONAMI\\Pro Evolution Soccer 2012\\"
"InstallSource"="J:\\"
"ModifyPath"=hex(2):4d,00,73,00,69,00,45,00,78,00,65,00,63,00,2e,00,65,00,78,\
00,65,00,20,00,2f,00,58,00,7b,00,45,00,37,00,33,00,37,00,41,00,30,00,39,00,\
38,00,2d,00,46,00,31,00,36,00,31,00,2d,00,34,00,42,00,36,00,46,00,2d,00,41,\
00,46,00,32,00,32,00,2d,00,38,00,36,00,41,00,41,00,45,00,33,00,34,00,46,00,\
36,00,46,00,42,00,44,00,7d,00,00,00
"NoModify"=dword:00000001
"NoRepair"=dword:00000001
"Publisher"="KONAMI"
"Readme"=""
"Size"=""
"EstimatedSize"=dword:00642958
"UninstallString"=hex(2):4d,00,73,00,69,00,45,00,78,00,65,00,63,00,2e,00,65,00,\
78,00,65,00,20,00,2f,00,58,00,7b,00,45,00,37,00,33,00,37,00,41,00,30,00,39,\
00,38,00,2d,00,46,00,31,00,36,00,31,00,2d,00,34,00,42,00,36,00,46,00,2d,00,\
41,00,46,00,32,00,32,00,2d,00,38,00,36,00,41,00,41,00,45,00,33,00,34,00,46,\
00,36,00,46,00,42,00,44,00,7d,00,00,00
"URLInfoAbout"="http://www.konami.com"
"URLUpdateInfo"=""
"VersionMajor"=dword:00000001
"VersionMinor"=dword:00000001
"WindowsInstaller"=dword:00000001
"Version"=dword:01010000
"Language"=dword:00000000
"DisplayName"="Pro Evolution Soccer 2012"
Pues no lo entiendo... yo he provado y si funciona bien el script , asi lo he hecho yo:
DisplayVersion = Registry.GetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Products\\890A737E161FF6B4FA2268AA3EF4F6DB\\InstallProperties", "DisplayVersion", false);

if DisplayVersion == "1.00.0000" then
Label.SetText("Label2", "Actualizar a la v1.01")
else if DisplayVersion == "1.01.0000" then
Label.SetText("Label2", "Actualizado a la v1.01")
else
Label.SetText("Label2", "Actualizado")
end
end
Y el label me da este resultado : "Actualizado a la v1.01"
prueva que no tenga algo que ver el setpos , pero amos... me extraña
Probé con tu código y tampoco me funciona, aquí grabé un video y lo subí a youtube para que lo veáis. Velo a full screen.



Tengo ams 8 8.0.5.0 y windows 7 ultimate x 64 bits
Prueva estas cosas:
Con el debug , haber que retorna DisplayVersion , ya sabes...
Debug.ShowWindow(true)
Debug.Print(DisplayVersion)
Si retorna la version 1.01.0000 , prueba a pasarlo al evento Onshow , si no, puede ser que en 64 bits los registros se registran diferente , se de algún problema con ello... comprueva bien la ruta del reg, pero según veo en el video el registro lo tienes localizado.

Si nada de esto sirve, pasame el apz.;)
Aqui está el apz

http://www.megaupload.com/?d=BS2HC44I

Le quité loas archivos originales como el crack y la traducción de las voces porque sino el proyecto pesaría 500 mb por lo tanto lo hice con dummies para bajar el peso. Y si, como muestra el video, la ruta del registro la estoy sacando desde mi regedit, si a ti te sirvio entonces no hay diferencia en la ruta de 64 y 32 bits.
:hypno: :hypno: :hypno: :hypno: :hypno:
Imagen
me da que algo pasa con la ruta del reg...
aqui tienes el archivo.reg

http://www.megaupload.com/?d=PW15G6FH
Mi pregunta es ¿ has probado que retorna DisplayVersion?
DisplayVersion = Registry.GetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Products\\890A737E161FF6B4FA2268AA3EF4F6DB\\InstallProperties", "DisplayVersion", false);

Debug.ShowWindow(true)
Debug.Print(DisplayVersion)
el debug me salé vacío, como mencioné en una de las respuestas anteriores, probando con solo Registry.getValue y Label.setText (resultado de registry....) me salía un espacio vacío sin el "1.01.0000" no sé qué es lo que pasa que esta porquería no funciona y ojo que no tengo el Windows puyado ni nada, yo no le cambio nada al sistema.
Haz una captura como esta , haber que veo
Imagen
Imagen
Acabo de probarlo en VMWare con un sistema de 32 bits y si sirve, no entiendo cual es el problema si solo se trata de consultar un valor del registro pero ya sé que da problemas con 64 bits
Lothan88 escribió:Acabo de probarlo en VMWare con un sistema de 32 bits y si sirve, no entiendo cual es el problema si solo se trata de consultar un valor del registro pero ya sé que da problemas con 64 bits
Ya te dije que aunque no lo parezca la ruta cambia , deberías hacer un filtro para 64 bits
Papá pero cual es la diferencia? mi sistema es de 64 bits, estoy desarrollando en 64 bits, el archivo de registro y el video son de mi sistema, no lo hice ni lo saqué de un sistema de 32 por lo tanto lo lógico es que la ruta que estoy usando es en base a mi sistema. Debe haber otra causa que cause la incompatibilidad. Agradezco quien pueda preguntar en Indigo Rose forum pues me bannearon sin razón y de por vida. Esa gente es demasiado apestosa.
No se.. sigo pensando que es cosa de 64bits , alguien que use 64 podría probar el apz con el registro haber si es la causa o no.

Lo de IR +1 ;)
Lo instalé en otro sistema de 64 bits y no sirve, probé de nuevo en 32 y si. Es una pena que no haya podido hacer esto con AMS pues no sé absolutamente más nada de programación y por lo tanto no puedo hacerlo con otros lenguajes.
como ya dije en otro post, en x64 todo lo de local machine>sofware pasa a HKEY_LOCAL_MACHINE\Software\WOW6432Node
Listo, resuelto el problema. Al parecer en 64 bits se necesitan permisos especiales para obtener dicho valor por lo tanto busqué a ver si aparecía en otra parte del registro ese mismo valor y lo conseguí. Ya está lista mi app, también hice silenciosa la instalación del juego, se instala sin serial pero no corre, justo al abrir la app se incrusta en el registro el serial y listo, a jugar.
Lothan88 escribió:Listo, resuelto el problema. Al parecer en 64 bits se necesitan permisos especiales para obtener dicho valor por lo tanto busqué a ver si aparecía en otra parte del registro ese mismo valor y lo conseguí. Ya está lista mi app, también hice silenciosa la instalación del juego, se instala sin serial pero no corre, justo al abrir la app se incrusta en el registro el serial y listo, a jugar.
Me alegro.
Permisos especiales? explica un poco mas como lo solucionaste asi nos servirá para otros usuarios.

También supongo habrás echo un filtro para 64/32 bits ;)
rafaxplayer escribió:
Me alegro.
Permisos especiales? explica un poco mas como lo solucionaste asi nos servirá para otros usuarios.

También supongo habrás echo un filtro para 64/32 bits ;)
Alguna vez has hackeado la instalación de PowerDVD 11? para hacerlo de manera manual se debe desconectar de internet, ir al registro, buscar un valor y cambiarlo y luego ejecutar el soft, poner la key y esperar a que active, luego sale normal y te vuelves a conectar a internet, si no haces eso de desconectarte por más que cambies el registro no se mantendrá y no te dejará hackear la instalación. Este caso no se resuelve de la misma manera pero es posible que ese conjunto de claves estén bloqueadas para obtener sus valores debido a que si ves la cadena están en una parte por así decirlo muy "privada" por lo tanto tal vez por eso no retorna los valores.

Lo que hice fue buscar ese mismo valor (1.01.0000) en otra parte del registro y resulta que está como lo dijo el compañero en wow6432node, entonces cambié la ruta de la consulta para allá. Esa fue la solución.

Por lógica como esa cadena no existe en 32 bits hice la ruta también hacia 32 bits y después me picaron las manos por hacer algo más desatendido, lo que hice fue un archivo batch que te instala el juego de manera desatendida pero sin key, al momento en que ejecutas el proyecto de ams se mete la key en el registro (on preload y por si las moscas on shutdown) y traduces,actualizas, crackeas y listo, ya tienes el pes 2012 en español y actualizado casi 100% desatendido.