Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: rigorvzla en 27 Octubre 2019, 18:08 pm



Título: Obtener Valor de De Registro
Publicado por: rigorvzla en 27 Octubre 2019, 18:08 pm
Hola a todos, estoy por aqui hoy por lo siguiente, eh intentado de muchisimas maneras y probado cuanto codigo en internet eh encontrado pero no doy con la solucion, necesito obtener los valores de la siguiente llave, pero siempre me regresa null y no entiendo el porque, ya que eh probado con tras llaves de registro y si me da el valor que tiene.

Anexo el codigo q ocupo para ver quien puede ayudarme con este problema.

Código:
   Microsoft.Win32.RegistryKey rkey;
            rkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\OEMInformation");
            if (rkey == null)
            {
                Console.WriteLine("no");
            }
            else
            {
                string myTestKey = (string)rkey.GetValue("Model");
                Console.WriteLine(myTestKey);
            }

Gracias de antemano


Título: Re: Obtener Valor de De Registro
Publicado por: Serapis en 27 Octubre 2019, 18:42 pm
Antes de abrir una clave, que tal si primero compruebas si existe?... Si no, estás cazando gamusinos.


Título: Re: Obtener Valor de De Registro
Publicado por: rigorvzla en 28 Octubre 2019, 03:11 am
jeje gamusinos, si existe yo revise el registro y ahi esta, incluso hice pruebas con el mismo codigo en otras keys y resulta, pero ese, los datos como q son fantasmas por que desde el registro se ve y esta, pero desde el codigo no da el valor del codigo .


Título: Re: Obtener Valor de De Registro
Publicado por: Serapis en 28 Octubre 2019, 13:00 pm
Si has verificado que existe (entiendo que en tu equipo puedas abrir el 'regedit' y buscarlo, pero al verificar lo que quiero decir es que puedes listarlo por código y aparece, porque no vas a ir al equipo del cliente a mirar su regedit, no?), lo siguiente que procede es saber si tienes permisos para acceder a dicha clave.

Nuevamente si es en tu equipo, puedes simplemente abrir el regedit pinchas en la clave con el otro botón y tomar permisos para el usuario (si el usuario tiene un mínimo de privilegios), si solo vas a leeerlos basta el permiso 'read', si tienes que ahcer modificaciones, etc.. el 'full control'.

...y nuevamente (esto ya es mala costumbre), para información específica, ningún sitio mejor que la propia documentación del propio fabricante/proveedor del software... (cualquier explicación dada por terceros nunca será exhaustiva, porque a nadie le apetece repetir lo que ya viene explicado en otras partes, solo porque al que pregunta le dé pereza buscar la info donde procede).
https://docs.microsoft.com/en-us/windows/win32/sysinfo/registry-key-security-and-access-rights
En dicha página a su derecha aparece el árbol de temas sobre el registro, tómate el tiempo necesario para leer... es preferible documentarse bien que andar preguntando contínuamente, como es preferible tejer telas nuevas que zurcir trozos viejos y rotos para unirlos.

...programar a golpe de preguntas, es tedioso lento y sujeto a mala praxis de programación (básicamente supone que por falta de conocimientos se va improvisando sobre la marcha).


Título: Re: Obtener Valor de De Registro
Publicado por: rigorvzla en 29 Octubre 2019, 14:06 pm
Gracias por tu respuesta nebire, de todos modos el codigo que te eh mostrado aqui se los dejo mas ordenado.

Código:
private static string ReadKey(string registro, string keyName)
        {
            Microsoft.Win32.RegistryKey rkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(registro);
            if (rkey == null)
            {
                Console.WriteLine("no");
            }
            else
            {
                keyName = (string)rkey.GetValue(keyName);
            }
            return keyName;
        }

uso:
Código:
            Console.WriteLine(ReadKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\OEMInformation\\", "Model"));

yo lo uso para ver cualquier otra llave del registro y me da la informacion sin problemas , no entiendo por que justamente esta llavo NO me muestra los datos.

Si alguien mas puede ayudarme se lo agradeceria mucho.


Título: Re: Obtener Valor de De Registro
Publicado por: rigorvzla en 29 Octubre 2019, 15:57 pm
Hola de nuevo a migos, eh conseguido la solucion, tal cual el codigo como esta, funciona.

Pero mi equipo es de 64Bits asi q con la funcion "Any CPU" no funciona, lo que hice fue cambiar la compilacion a 64Bits y tadan! sirvio.! imagino que en caso de tratarce de 32bits debera compilarse en 86x , Gracias de todos modos , hasta una nueva inquietud.