.NET 4 Methode Sicherheit Ausnahme, wenn pinvoking
Habe ich einige code, der pinvokes native win32. Da ich aufgerüstet .NET 4, der code gestartet, werfen MethodAccessException sagen:
Versuch, Sicherheit durch Transparenz 'Tek.Audio.Midi.MidiDevice.GetDevices()' aufrufen systemeigenen code über die Methode 'Tek.Native.Windows.Multimedia.midiInGetNumDevs()' ist fehlgeschlagen. Methoden müssen auf die Sicherheit Kritischer oder Sicherheit sicher-entscheidend für nativen code aufrufen.
Hier ist was Los:
- Ausführbare assembly
Program.Main
Methodenaufrufe library1 public staticTek.Audio.Midi.MidiDevice.GetDevices()
- Library1 ' s
GetDevices()
Anrufe library2 public static pinvokeTek.Native.Windows.Multimedia.midiInGetNumDevs()
(ja, schlechte Praxis, was auch immer)
Nur Sicherheits-bezogene Attribute für Klassen, Methoden und Baugruppen beteiligt sind AllowPartiallyTrustedCallers auf library1, und ich weiß auch nicht warum.
Es beschämt mich, zugeben, ich bin ziemlich unwissend über die Sicherheit in .NET. Was sollte ich tun, um zu verhindern, dass diese Ausnahme? Und während ich hier bin, jede gute Artikel zu get begann mich auf .NET-Sicherheit?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie haben die Wahl. Die einfachste Sache zu tun wäre, um "opt-out" der neuen security-Modell.ODER (bedenkt ich bin keine .Net 4 security-Experte)Edit: die Entscheidung aus dem .Net 4 security-Modell ist unzuverlässig und sollte vermieden werden
Konnte Sie daneben Ihre Methode:
da können Sie mit code, der entwickelt wurde für teilweise Vertrauenswürdige Aufrufer.
Leider habe ich nicht einen guten Artikel kann ich Euch schicken, die ich gehabt habe, dies herauszufinden, wie Sie haben, durch die Festlegung meinem kaputten code. 🙂