╔╗╔╗╔╗─────╔╗───────────╔═══╗─────────╔╗───────╔════╗────╔╗────
║║║║║║─────║║───────────║╔═╗║────────╔╝╚╗──────║╔╗╔╗║────║║────
║║║║║╠╦═╗╔═╝╠══╦╗╔╗╔╦══╗║╚═╝╠══╦══╦╦═╩╗╔╬═╦╗─╔╗╚╝║║╠╩═╦══╣║╔══╗
║╚╝╚╝╠╣╔╗╣╔╗║╔╗║╚╝╚╝║══╣║╔╗╔╣║═╣╔╗╠╣══╣║║╔╣║─║║──║║║╔╗║╔╗║║║══╣
╚╗╔╗╔╣║║║║╚╝║╚╝╠╗╔╗╔╬══║║║║╚╣║═╣╚╝║╠══║╚╣║║╚═╝║──║║║╚╝║╚╝║╚╬══║
─╚╝╚╝╚╩╝╚╩══╩══╝╚╝╚╝╚══╝╚╝╚═╩══╩═╗╠╩══╩═╩╝╚═╗╔╝──╚╝╚══╩══╩═╩══╝
───────────────────────────────╔═╝║───────╔═╝║─────── v3.1.1───
───────────────────────────────╚══╝───────╚══╝─────────────────
- NOTA: Librería v3.1.1 Terminada a un
100%
- Documentación actualizada el día:
01/05/2020
Usted encontrará dos carpetas llamadas: Estos 2 proyectos , son solo para probar el uso de las funciones de la librería.
WindowsRegistryTools - Versión Consola
Terminado 100%: Prueba de todas la funcionalidades mediante ConsolaWindowsRegistryTools - Versión formulario
Terminado 100%: Prueba de todas las funcionalidades utilizando un Formulario
Esta librería fue desarrollada para Crear, Leer y eliminar llaves del registro de Windows (REGEDIT) y poder realizarlo de la manera más sencilla posible.
Éstas son las funcionalidades de ésta librería en su versión 3.1v, Usted pueder ver aquí, ¿Cómo agregar ésta librería a mi proyecto?
-
Crear llaves:
- HKEY_CLASSES_ROOT...............................
(No Requiere permisos de administrador)
- HKEY_CURRENT_USER..............................
(No Requiere permisos de administrador)
- HKEY_LOCAL_MACHINE...........................
(Requiere permisos de administrador)
- HKEY_USERS.................................................
(Requiere permisos de administrador)
- HKEY_CURRENT_CONFIG........................
(Requiere permisos de administrador)
- HKEY_CLASSES_ROOT...............................
-
Crear Valores de llaves:
- String Value...................................................
(Tipo de Valor: String)
- Binarie Value.................................................
(Tipo de Valor: Byte[] - Decimal)
- DWORD (32bits) Value.............................
(Tipo de Valor: Int32 - Decimal)
- QWORD (64bits) Value.............................
(Tipo de Valor: Int64 - Decimal)
- Multi-String Value......................................
(Tipo de Valor: String [])
- Expandable String......................................
(Tipo de Valor: String)
- String Value...................................................
-
Obtener ó leer valores de una llave:
- String Value..................................................
(Retornará un String)
- Binarie Value................................................
(Retornará un Byte [])
- DWORD (32bits) Value.............................
(Retornará un Int32)
- QWORD (64bits) Value.............................
(Retornará un Int64)
- Multi-String Value......................................
(Retornará un String [])
- Expandable String......................................
(Retornará un String)
- String Value..................................................
-
Eliminar Llave
NOTA: Esta función eliminar una llave y todos los valores que ésta pueda almacenar
-
Eliminar Valores
NOTA: Ésta funcionalidad solo eliminará un valor, si desea eliminar todos los valores dentro de una llave, usted puede usar la función anterior "Eliminar Llave".
-
Dentro de tu proyecto, cree una carpeta llamada
Libs
"Opcional" -
=> En la Carpeta Libs =>Clic derecho => Agregar => Elemento Existente
-
Buscamos la Librería y agregamos.
-
Listo, ya está importada la librería
-
Instanciamos la Librería dentro de Clase, para así poder usarlo.
El nombre que se le dará a ésta instancia será registro. (Usted puede colocarle el nombre que desee)
RegistryTools registro = new RegistryTools();
NOTA: Usted tendrá que escribir el nombre "registro", vada vez va a usar las funcionalidades de la librería.
Lea detalladamente éste apartado, donde se podrán despejar algunas dudas. En la versión 3.1.1 de ésta librería cuenta con documentación incluida.
-
Camino del registro (path): Variable
path
, Se almacena el camino de la ruta, la librería acepta distintos tipos de sintaxis, las cuales son las siguientes:"Computer\"
.................Ejemplo:Computer\HKEY_CURRENT_USER\Control Panel\Appearance
"Equipo\"
.....................Ejemplo:Equipo\HKEY_CURRENT_USER\Control Panel\Appearance
""
.....................................Ejemplo:HKEY_CURRENT_USER\Control Panel\Appearance
-
Nombre de la llave (keyName): Variable
keyName
, se almacenará el nombre de la llave de registro. -
Nombre del Valor (valueName): Variable
valueName
, se almacenará el nombre que tendrá el Valor dentro de una llave. -
Datos del Valor (valueData): Variable
valueName
, se almacenará los datos dentro de un valor, éstos datos pueden variar según sea el Tipo de Dato.
// Camino de ruta de la llave
string path = @"HKEY_CURRENT_USER\Software";
// Es el nombre de la Llave
string keyName = "NombreDeLlave";
// Ejecuta pero no muestra ningún mensaje
registro.CreateKey(path, keyName);
// Ejecuta y muestra en consola (Exito o algún código de error)
Console.WriteLine(registro.CreateKey(path, keyName));
Los registros de Windows nos permite poder crear Valores con distintos tipos de datos según lo necesitemos. Estos son los tipos de datos que aceptan el registro de Windows (Regedit)
- String Value...................................................
(Tipo de Valor: String)
- Binarie Value.................................................
(Tipo de Valor: byte[] - Decimal)
- DWORD (32bits) Value.............................
(Tipo de Valor: Int32 - Decimal)
- QWORD (64bits) Value.............................
(Tipo de Valor: Int64 - Decimal)
- Multi-String Value......................................
(Tipo de Valor: String [])
- Expandable String......................................
(Tipo de Valor: String)
// Camino de ruta de la llave
string path = @"HKEY_CURRENT_USER\Software\NombreDeLlave";
// Es el nombre del Valor
string valueName = "New Value TypeString";
// Son los valores que se almacenarán en la llave
string valueData = "Soy un dato tipoString";
// Ejecuta y muestra en consola (Exito o algún código de error)
Console.WriteLine(registro.CreateKeyValue_String(path, keyName, valueData));
Los valores que usted ingresará deben ser decimales tipo bytes, separando individualmente los datos mediante una ','
// Camino de ruta de la llave
string path = @"HKEY_CURRENT_USER\Software\NombreDeLlave";
// Es el nombre del Valor
string valueName = "New Value TypypeBinary";
// Son los valores que se almacenarán en la llave
byte [] valueData = {1,5,7,8,9,5,40,56,12,89,1,5,14,5,5,1,154,24};
// Ejecuta y muestra en consola (Exito o algún código de error)
Console.WriteLine(registro.CreateKeyValue_Binarie(path, keyName, valueData));
// Camino de ruta de la llave
string path = @"HKEY_CURRENT_USER\Software\NombreDeLlave";
// Es el nombre del Valor
string valueName = "New Value TypeInt32";
// Son los valores que se almacenarán en la llave
Int32 valueData = "123456789"; // Valor máximo -2147483648 a 2147483647
// Ejecuta y muestra en consola (Exito o algún código de error)
Console.WriteLine(registro.CreateKeyValue_DWORD(path, keyName, valueData));
// Camino de ruta de la llave
string path = @"HKEY_CURRENT_USER\Software\NombreDeLlave";
// Es el nombre del Valor
string valueName = "New Value TypeInt64";
// Son los valores que se almacenarán en la llave
Int64 valueData = "123456789"; // Valor máximo -9223372036854775808 a 9223372036854775807
// Ejecuta y muestra en consola (Exito o algún código de error)
Console.WriteLine(registro.CreateKeyValue_QWORD(path, keyName, valueData));
// Camino de ruta de la llave
string path = @"HKEY_CURRENT_USER\Software\NombreDeLlave";
// Es el nombre del Valor
string valueName = "New Value TypeInt64";
// Son los valores que se almacenarán en la llave
string [] valueData = {"txt1","txt2","txt3","texto"}; // texto con saltos de linea
// No tiene limite de saltos de linea
// Ejecuta y muestra en consola (Exito o algún código de error)
Console.WriteLine(registro.CreateKeyValue_MultiString(path, keyName, valueData));
// Camino de ruta de la llave
string path = @"HKEY_CURRENT_USER\Software\NombreDeLlave";
// Es el nombre del Valor
string valueName = "New Value TypeExpandString";
// Son los valores que se almacenarán en la llave
string valueData = "Soy un dato tipo ExpandString";
// Ejecuta y muestra en consola (Exito o algún código de error)
Console.WriteLine(registro.CreateKeyValue_ExpandString(path, keyName, valueData));
// Camino de ruta de la llave
string path = @"HKEY_CURRENT_USER\Software\NombreDeLlave";
// Es el nombre del Valor
string valueName = "value String";
// Ejecuta y guarda los datos dentro de la variable
String valueData = registro.CreateKeyValue_String(path, keyName, valueData));
// En caso de algún error de leer la llave, mandará un código de error
// Verifica el código de error en la documentación
// Camino de ruta de la llave
string path = @"HKEY_CURRENT_USER\Software\NombreDeLlave";
// Es el nombre del Valor
string valueName = "value Binary";
// Ejecuta y guarda los datos dentro de la variable
byte [] valueData = registro.CreateKeyValue_Binary(path, keyName, valueData));
// Camino de ruta de la llave
string path = @"HKEY_CURRENT_USER\Software\NombreDeLlave";
// Es el nombre del Valor
string valueName = "value DWORD";
// Ejecuta y guarda los datos dentro de la variable
Int32 valueData = registro.CreateKeyValue_DWORD(path, keyName, valueData));
// En caso de algún error de leer la llave, mandará un código de error
// Verifica el código de error en la documentación
// Camino de ruta de la llave
string path = @"HKEY_CURRENT_USER\Software\NombreDeLlave";
// Es el nombre del Valor
string valueName = "value QWORD";
// Ejecuta y guarda los datos dentro de la variable
Int64 valueData = registro.CreateKeyValue_QWORD(path, keyName, valueData));
// En caso de algún error de leer la llave, mandará un código de error
// Verifica el código de error en la documentación
// Camino de ruta de la llave
string path = @"HKEY_CURRENT_USER\Software\NombreDeLlave";
// Es el nombre del Valor
string valueName = "value MultiString";
// Ejecuta y guarda los datos dentro de la variable
String [] valueData = registro.CreateKeyValue_MultiString(path, keyName, valueData));
// En caso de algún error de leer la llave, mandará un código de error
// Verifica el código de error en la documentación
// Camino de ruta de la llave
string path = @"HKEY_CURRENT_USER\Software\NombreDeLlave";
// Es el nombre del Valor
string valueName = "value ExpandString";
// Ejecuta y guarda los datos dentro de la variable
String valueData = registro.CreateKeyValue_ExpandString(path, keyName, valueData));
// En caso de algún error de leer la llave, mandará un código de error
// Verifica el código de error en la documentación
NOTA: Al Eliminar la llave, ésta borrará todos los valores que pueda almacenar.
// Camino de ruta de la llave
string path = @"HKEY_CURRENT_USER\Software\NombreDeLlave";
// Ejecuta pero no muestra ningún mensaje
registro.DeleteKey(path);
// Ejecuta y muestra en consola (Exito o algún código de error)
Console.WriteLine(registro.DeleteKey(path));
// Camino de ruta de la llave
string path = @"HKEY_CURRENT_USER\Software\NombreDeLlave";
// Es el nombre del Valor
string valueName = "Soy un Value";
// Ejecuta pero no muestra ningún mensaje
registro.DeleteValue(path, valueName);
// Ejecuta y muestra en consola (Exito o algún código de error)
Console.WriteLine(registro.DeleteValue(path, valueName));
Podemos observa el menú con todas las funcionalidades de la librería, solo tenemos que escoger una opción valida, para poder entrar al subMenú.
Según sea el caso nos pedirá ingresar el camino de ruta
Según sea el caso nos pedirá ingresar el Nombre del Valor
Según sea el caso nos pedirá ingresar los datos del valor, la cual cambiará según la opción escogida en el menú principal
Al culminar el proceso, la Consola mostrará un mensaje de error o de Exito, la lista lo puedes ver aquí
Éste pequeño formulario fue creado, solo con el fin de mostrar cada una de las funcionalidades de ésta librería.
Tan sencillo como colocar la ruta y el nombre de la llave y luego dar click en el botón.
Podemos observar en el registro que se creó la llave exitosamente.
Como podemos observar en la documentación existen distintos tipos de datos aceptados en el registro de windows, las cuales son:
Y ésta librería si puede crear cada una de ellas.
Ejemplo: Crear un Binary value en la anterior llave creada, debemos recordar que podemos separar los números mediante un espacio, una coma o un guión: ' ', ',', '-'
y los números HEX ingresados deben ser en números enteros ya que al ir al registro, éstas se subiran en HEX, miremos el ejemplo.
Y vemos el registro:
Este es el formulario para leer valores de una llave del registro:
- Primero debemos escoger el tipo de valor a leer (en el caso de los bytes,
HEX
= devuelve un Array Hex //byte
= devuelve un Array integer)
Podemos observar que obtuvimos los valores del ejemplo anterior pero en HEX
e integer
.
Solo tenemos que escribir la ruta de la llave y se borrará la llave y todos los valores que ésta obtenga.
Este proceso elimina solo un valor de una llave.
-
E#R001 = La Ruta ingresada está vacía.
-
E#R002 = La Ruta ingresada no es valida.
-
E#R003 = La Nombre del valor está vacía
-
E#R004 = La llave tiene un nombre no valido
-
E#R005 = El nombre de la llave está vacía
-
E#RR01 = Hubo un error al Leer el Valor
-
E#RR02 = No se encontró ningún valór con ese nombre
-
E#RR03 = El nombre del valor ingresado está vacío
-
E#RR04 = No se puedo crear una el valor de la llave
-
E#NN01 = No se encontó una llave con ese nombre ó (No se puedo eliminar por cuestiones de permisos)
-
E#CR01 = No se puedo crear la llave (contenedora)
-
E#XITO = La Función se ejecuto correctamente;
-
-000001 = La Ruta ingresada está vacía.
-
-000002 = La Ruta ingresada no es valida.
-
-000003 = El nombre del valor está vació
Ésta librería es utilizada en el Software FullWindowsOptimitation
Éste proyecto se creó con el IDE Visual Studio 2019 Puedes obtener la version comunidad gratis aquí. Verificar las siguientes herramientas estén descargadas e instaladas correctamente:
- Desktop development with C#
- .NET desktop development
You also need to install the following individual components:
- Any of the VC++ 2017 toolsets (latest prefered)
- Windows 10 SDK (10.0.17134.0)
- .NET Framework 4.7 SDK
- .NET Framework 4.7 targeting pack
GNU GENERAL PUBLIC LICENSE