Gewusst wie: Erstellen einer teilweise vertrauenswürdigen Anwendung durch Entfernen der Abhängigkeit der CRT-Bibliotheks-DLL

In diesem Thema wird erläutert, wie Sie eine teilweise vertrauenswürdige Common Language Runtime-Anwendung mit Visual C++ erstellen, indem Sie abhängigkeiten von msvcm90.dll entfernen.

Eine mit /clr integrierte Visual C++-Anwendung hat eine Abhängigkeit von msvcm90.dll, die Teil der C-Runtime-Bibliothek ist. Wenn Ihre Anwendung in einer teilweisen Vertrauensumgebung verwendet werden soll, erzwingt die CLR bestimmte Codezugriffssicherheitsregeln für Ihre DLL. Daher ist es erforderlich, diese Abhängigkeit zu entfernen, da msvcm90.dll systemeigenen Code enthält und die Codezugriffssicherheitsrichtlinie nicht für sie erzwungen werden kann.

Wenn Ihre Anwendung keine Funktionen der C-Runtime-Bibliothek verwendet und Sie die Abhängigkeit von dieser Bibliothek aus Ihrem Code entfernen möchten, müssen Sie die Option "/NODEFAULTLIB:msvcmrt.lib linker" und "linker" mit "ptrustm.lib" oder "ptrustmd.lib" verwenden. Diese Bibliotheken enthalten Objektdateien für die Initialisierung und Nichtinitialisierung einer Anwendung, Ausnahmeklassen, die vom Initialisierungscode verwendet werden, und verwalteten Ausnahmebehandlungscode. Durch das Verknüpfen in einer dieser Bibliotheken werden alle Abhängigkeiten von msvcm90.dll entfernt.

Hinweis

Die Reihenfolge der Assemblyentinitialisierung kann sich für Anwendungen unterscheiden, die die ptrust-Bibliotheken verwenden. Bei normalen Anwendungen werden Assemblys in der Regel in der umgekehrten Reihenfolge entladen, die sie geladen werden, aber dies ist nicht garantiert. Bei teilweise vertrauenswürdigen Anwendungen werden Assemblys in der Regel in derselben Reihenfolge entladen, in der sie geladen werden. Dies ist auch nicht garantiert.

So erstellen Sie eine teilweise vertrauenswürdige gemischte (/clr)-Anwendung

  1. Um die Abhängigkeit von msvcm90.dll zu entfernen, müssen Sie für den Linker angeben, der diese Bibliothek nicht mithilfe der Option "/NODEFAULTLIB:msvcmrt.lib linker" enthält. Informationen dazu, wie Sie dazu die Visual Studio-Entwicklungsumgebung oder programmgesteuert verwenden, finden Sie unter /NODEFAULTLIB (Ignore Libraries).

  2. Fügen Sie eine der ptrustm-Bibliotheken zu den Verknüpfungereingabeabhängigkeiten hinzu. Verwenden Sie "ptrustm.lib", wenn Sie Ihre Anwendung im Releasemodus erstellen. Verwenden Sie für den Debugmodus "ptrustmd.lib". Informationen dazu, wie Sie dazu die Visual Studio-Entwicklungsumgebung oder programmgesteuert verwenden, finden Sie unter . Lib Files as Linker Input.

Siehe auch

Gemischte (native und verwaltete) Assemblys
Initialisierung gemischter Assemblys
Bibliotheksunterstützung für verschiedene Assemblys
/link (Optionen an Linker übergeben)