Windows Vista: no se puede cargar la DLL 'x.dll': acceso no válido a la ubicación de la memoria. (DllNotFoundException)

Estaba probando en la caja de un cliente esta tarde que tiene Windows Vista (Él tenía su casa, pero estoy probando en una edición comercial con los mismos resultados).

Hacemos uso de un .DLL que obtiene la identificación de hardware de la computadora. Su uso es muy simple y el programa de muestra que he creado funciona. El dll esEsto de AzSdk. De hecho, esto funciona perfectamente en Windows XP. Sin embargo, por alguna extraña razón, dentro de nuestro proyecto (mucho más grande), tenemos esta excepción:

Exception Type:        System.DllNotFoundException
Exception Message:     Unable to load DLL 'HardwareID.dll': Invalid access to memory location. (Exception from HRESULT: 0x800703E6)
Exception Target Site: GetHardwareID

No sé qué puede estar causando el problema, ya que tengo control total sobre la carpeta. El proyecto es una aplicación de formularios Windows Forms de c # .net y todo funciona bien, excepto la llamada a la biblioteca externa.

Lo estoy declarando así: (nota: esno una biblioteca COM y no necesita ser registrada).

[DllImport("HardwareID.dll")]
public static extern String GetHardwareID(bool HDD,
   bool NIC, bool CPU, bool BIOS, string sRegistrationCode);

Y luego el código de llamada es bastante simple:

private void button1_Click(object sender, EventArgs e)
{
    textBox1.Text = GetHardwareID(cb_HDD.Checked, 
                                  cb_NIC.Checked, 
                                  cb_CPU.Checked, 
                                  cb_BIOS.Checked, 
                                 "*Registration Code*");
}

Cuando crea una aplicación de muestra, funciona, pero dentro de mi proyecto no. Bajo XP funciona bien. ¿Alguna idea sobre qué debo hacer en Vista para que esto funcione? Como he dicho, la carpeta y sus subcarpetas tienen Control total para "Todos".

ACTUALIZAR: No tengo instalado Vista SP 1.

ACTUALIZACIÓN 2: He instalado Vista SP1 y ahora, con UAC deshabilitado, ¡ni siquiera la muestra simple funciona! :( Maldita vista.

Respuestas a la pregunta(6)

Su respuesta a la pregunta