Ich habe heute Nachmittag auf einer Kundenbox getestet, die Windows Vista hat (Er hatte zu Hause, aber ich teste auf einer Business Edition mit den gleichen Ergebnissen).Windows Vista: DLL 'x.dll' konnte nicht geladen werden: Ungültiger Zugriff auf den Speicherort. (DllNotFoundException)
Wir verwenden eine .DLL, die die Hardware-ID des Computers erhält. Die Bedienung ist sehr einfach und das von mir erstellte Beispielprogramm funktioniert. Die Dll ist This from AzSdk. In der Tat funktioniert das perfekt unter Windows XP. Doch aus irgendeinem seltsamen Grund, in unserem Projekt (viel größer), bekommen wir diese Ausnahme:
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
Ich weiß nicht, was das Problem verursacht, da ich die volle Kontrolle über den Ordner haben. Das Projekt ist eine C# .net Windows Forms-Anwendung und alles funktioniert gut, außer dem Aufruf für die externe Bibliothek.
Ich deklariere es so: (Hinweis: es ist nicht eine COM-Bibliothek und es muss nicht registriert werden).
[DllImport("HardwareID.dll")]
public static extern String GetHardwareID(bool HDD,
bool NIC, bool CPU, bool BIOS, string sRegistrationCode);
Und dann der aufrufende Code ist ganz einfach:
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*");
}
Wenn Sie eine Beispielanwendung zu erstellen, es funktioniert, aber in meinem projectit nicht. Unter XP funktioniert das gut. Irgendwelche Ideen darüber, was ich in Vista tun sollte, damit dies funktioniert? Wie gesagt, der Ordner und seine Unterordner haben Vollzugriff auf "Everybody".
UPDATE: Ich habe Vista SP 1 nicht installiert.
UPDATE 2: Ich habe Vista SP1 installiert und jetzt, mit UAC deaktiviert, nicht einmal die einfache Probe funktioniert !!! Verdammt :(Vista.
Der Name der Ausnahme könnte fehlleitend sein. Siehe Beitrag oben. – Pupsik