usar registro leer escribir ejemplos como c# registry

ejemplos - leer y escribir en el registro de windows c#



Leer una clave de registro en C# (6)

Está buscando el método astutamente llamado Registry.GetValue .

Desarrollé una aplicación y la instalé en una computadora cliente. En mi aplicación necesito obtener su ruta de instalación. Mi aplicación tiene una entrada de registro en:

HKEY_LOCAL_MACHINE/SOFTWARE/MyApplication/[AppPath]

¿Cómo puedo leer AppPath usando C #?


Puede usar lo siguiente para llegar a donde el registro piensa que está instalado:

(string)Registry.LocalMachine.GetValue(@"SOFTWARE/MyApplication/AppPath", "Installed", null);

O puede usar lo siguiente para averiguar de dónde se lanza la aplicación en realidad:

System.Windows.Forms.Application.StartupPath

Este último es más confiable que el anterior si está tratando de usar la ubicación .exe como una ruta relativa para encontrar archivos relacionados. El usuario podría cambiar las cosas fácilmente después de la instalación y seguir funcionando bien porque las aplicaciones .NET no dependen tanto del registro.

Usando StartupPath , incluso podría hacer algo inteligente como hacer que su aplicación actualice las entradas del registro en tiempo de ejecución en lugar de estrellarse miserablemente debido a entradas faltantes / incorrectas / corruptas.

Y asegúrese de mirar la funcionalidad de configuración de la aplicación como almacenamiento de valores en lugar del registro ( Properties.Settings.Default.mySettingEtc ). Puede leer / escribir configuraciones para la aplicación y / o los niveles de usuario que se guardan como archivos simples MyApp.exe.config en ubicaciones estándar. Una buena explosión del pasado (buenos viejos días Win 3.1 / DOS) para que la aplicación de instalación / eliminación sea una simple copia / eliminación de una estructura de carpetas o dos en lugar de una complicada y arcana instalación / desinstalación que deja todo tipo de basura en el registro y salpicado en todo el disco duro.


Si lo quieres convertir a un tipo específico, puedes usar este método. La mayoría de los tipos no primitivos no admitirán de forma predeterminada la transmisión directa, por lo que tendrá que manejarlos en consecuencia.

public T GetValue<T>(string registryKeyPath, string value, T defaultValue = default(T)) { T retVal = default(T); retVal = (T)Registry.GetValue(registryKeyPath, value, defaultValue); return retVal; }


usando Microsoft.Win32;

string chkRegVC = "NO"; private void checkReg_vcredist() { string regKey = @"SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall"; using (Microsoft.Win32.RegistryKey uninstallKey = Registry.LocalMachine.OpenSubKey(regKey)) { if (uninstallKey != null) { string[] productKeys = uninstallKey.GetSubKeyNames(); foreach (var keyName in productKeys) { if (keyName == "{196BB40D-1578-3D01-B289-BEFC77A11A1E}" ||//Visual C++ 2010 Redistributable Package (x86) keyName == "{DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}" ||//Visual C++ 2010 Redistributable Package (x64) keyName == "{C1A35166-4301-38E9-BA67-02823AD72A1B}" ||//Visual C++ 2010 Redistributable Package (ia64) keyName == "{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}" ||//Visual C++ 2010 SP1 Redistributable Package (x86) keyName == "{1D8E6291-B0D5-35EC-8441-6616F567A0F7}" ||//Visual C++ 2010 SP1 Redistributable Package (x64) keyName == "{88C73C1C-2DE5-3B01-AFB8-B46EF4AB41CD}" //Visual C++ 2010 SP1 Redistributable Package (ia64) ) { chkRegVC = "OK"; break; } else { chkRegVC = "NO"; } } } } }


vea esto http://www.codeproject.com/Articles/3389/Read-write-and-delete-from-registry-with-C

Actualizado:

Puede usar la clase RegistryKey en Microsoft.Win32 espacio de nombres Microsoft.Win32 .

Algunas funciones importantes de RegistryKey son las siguientes:

GetValue //to get value of a key SetValue //to set value to a key DeleteValue //to delete value of a key OpenSubKey //to read value of a subkey (read-only) CreateSubKey //to create new or edit value to a subkey DeleteSubKey //to delete a subkey GetValueKind //to retrieve the datatype of registry key


string InstallPath = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE/SOFTWARE/MyApplication/AppPath", "Installed", null); if (InstallPath != null) { // Do stuff }

Ese código debería obtener tu valor. Tendrás que ser

using Microsoft.Win32;

para que eso funcione.