c # – Leer una clave de registro

Tengo una aplicación web que está importando DLL desde la carpeta bin.

const string dllpath = "Utility.dll";

    [DllImport(dllpath)]

Ahora lo que quiero hacer es importar primero los archivos DLL desde una carpeta que no esté en el proyecto actual, pero en una ubicación diferente.

La ruta de esa carpeta se almacena en una clave de registro.

¿Cómo debería hacer esto?

Editar:

¿Por qué no puedo resolver esto?

public partial class Reports1 : System.Web.UI.Page
{

    RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(@"Software\xyz");
    string pathName = (string)registryKey.GetValue("BinDir");

    const string dllpath = pathName;
    [DllImport(dllpath)]
    public static extern bool GetErrorString(uint lookupCode, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder buf, uint bufSize);

    protected void Page_Load(object sender, EventArgs e)
    {

string pathName = (string) registryKey.GetValue (“BinDir”); no está trabajando aquí, pero está trabajando en el evento de carga de página …

Pero si hago esta importación de DLL no funcionará …
¿Cómo puedo arreglar esto?

Mejor respuesta
Leer el registro es bastante sencillo. El espacio de nombres Microsoft.Win32 tiene una clase estática de Registro. Para leer una clave del nodo HKLM, el código es:

RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("Software\\NodeName")

Si el nodo es HKCU, puede reemplazar LocalMachine con CurrentUser.

Una vez que tenga el objeto RegistryKey, use GetValue para obtener el valor del registro. Continuando con el ejemplo anterior, obtener el valor de registro de pathName sería:

string pathName = (string) registryKey.GetValue("pathName");

Y no se olvide de cerrar el objeto RegistryKey cuando haya terminado con él (o coloque la declaración para obtener el valor en un bloque de uso).

Actualizaciones

Veo un par de cosas. Primero, cambiaría pathName para que sea una propiedad estática definida como:

Private static string PathName
{ 
    get
    {
         using (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(@"Software\Copium"))
         {
              return (string)registryKey.GetValue("BinDir");
         }
    }
}

Los dos temas fueron:

> La referencia RegistryKey mantendrá el registro abierto. Usar eso como una variable estática en la clase causará problemas en la computadora.
> El uso de la ruta de registro hace barras inclinadas, no barras invertidas.

Por favor indique la dirección original:c # – Leer una clave de registro - Código de registro