c# - leer - escribir en el registro de windows vb net
Cómo leer el valor de una clave de registro c# (1)
Al inicio de mi aplicación, estoy tratando de ver si el usuario tiene una versión específica de un software instalado, específicamente el conector MySQL, todo usando c #. En el registro, MySQL contiene una entrada de versión. Entonces, lo que estoy tratando de lograr es esto.
Mi aplicación se inicia. En algún lugar del código de inicio, necesito hacer lo siguiente en orden. Verifique si el usuario tiene instalado el conector MySQL, que se encuentra en ...
HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/MySQL AB/MySQL Connector/Net
Si el usuario tiene el conector instalado, quería verificar qué versión tienen, que se almacena como Nombre = "Versión" y Datos = xxx (Imagen debajo)
Ahora, si el usuario tiene una versión específica instalada, entonces ejecutaré otro código, que es de donde puedo tomar.
¿Cuál sería la mejor manera de resolver esto?
EDITAR: A continuación se muestra el código que tengo actualmente y aparece un error en la línea 19 (se comenta). Mi error dice " error CS1001: Identifier Expected
" No pude entender lo que eso significa. ¿Alguna ayuda?
using System;
using Microsoft.Win32;
using System.Data;
public class regTest
{
public static void Main()
{
try
{
RegistryKey key = Registry.LocalMachine.OpenSubKey("Software//Wow6432Node//MySQL AB//MySQL Connector//Net");
if (key != null)
{
Object o = key.GetValue("Version");
if (o != null)
{
Version version = new Version(o as String); //"as" because it''s REG_SZ...otherwise ToString() might be safe(r)
Version broken = new Version("6.7.4");
if (version.Equals.(broken)) //This is where the error is occuring
{
DataSet dataSet = ConfigurationManager.GetSection("system.data") as ystem.Data.DataSet;
DataView vi = dataSet.Tables[0].DefaultView;
vi.Sort = "Name";
if (vi.Find("MySql") == -1)
{
dataSet.Tables[0].Rows.Add("MySql"
, "MySql.Data.MySqlClient"
, "MySql.Data.MySqlClient"
,
typeof(MySql.Data.MySqlClient.MySqlClientFactory).AssemblyQualifiedName);
}
}
}
}
}
catch (Exception ex) //just for demonstration...it''s always best to handle specific exceptions
{
//react appropriately
}
}
}
Primero debe agregar using Microsoft.Win32;
a tu página de códigos
Entonces puede comenzar a usar las clases de Registry
:
try
{
using (RegistryKey key = Registry.LocalMachine.OpenSubKey("Software//Wow6432Node//MySQL AB//MySQL Connector//Net"))
{
if (key != null)
{
Object o = key.GetValue("Version");
if (o != null)
{
Version version = new Version(o as String); //"as" because it''s REG_SZ...otherwise ToString() might be safe(r)
//do what you like with version
}
}
}
}
catch (Exception ex) //just for demonstration...it''s always best to handle specific exceptions
{
//react appropriately
}
CUIDADO: a menos que tenga acceso de administrador, es poco probable que pueda hacer mucho en LOCAL_MACHINE
. A veces, incluso los valores de lectura pueden ser una operación sospechosa sin derechos de administrador.