Condividi tramite


Procedura: creare un'applicazione parzialmente attendibile rimuovendo la dipendenza dalla DLL della libreria CRT

Aggiornamento: novembre 2007

In questo argomento viene illustrato come creare un'applicazione Common Language Runtime parzialmente attendibile con Visual C++ rimuovendo la dipendenza da msvcm90.dll.

Un'applicazione Visual C++ compilata con /clr presenterà una dipendenza da msvcm90.dll, che fa parte della libreria di runtime C. Quando si desidera che l'applicazione venga utilizzata in un ambiente parzialmente attendibile, CLR applicherà alcune regole di sicurezza contro l'accesso di codice alla DLL. Sarà pertanto necessario rimuovere tale dipendenza poiché msvcm90.dll contiene codice nativo a cui non possono essere applicati criteri di sicurezza contro l'accesso di codice.

Se l'applicazione non utilizza funzionalità della libreria di runtime C e si desidera rimuovere dal codice la dipendenza dalla libreria, sarà necessario utilizzare l'opzione /NODEFAULTLIB:msvcmrt.lib del linker ed eseguire il collegamento a ptrustm.lib o ptrustmd.lib. Tali librerie contengono file oggetto per l'inizializzazione e l'annullamento dell'inizializzazione di un'applicazione, classi di eccezioni utilizzate dal codice di inizializzazione e codice di gestione delle eccezioni gestito. Con il collegamento a una di queste librerie viene rimossa qualsiasi dipendenza da msvcm90.dll.

Nota:

Per le applicazioni che utilizzano le librerie ptrust, l'ordine di annullamento dell'inizializzazione degli assembly può variare. Per le applicazioni normali, gli assembly vengono in genere scaricati nell'ordine inverso rispetto a quello di caricamento. Questo comportamento non è tuttavia garantito. Per le applicazioni parzialmente attendibili, gli assembly vengono in genere scaricati nello stesso ordine in cui vengono caricati. Anche in questo caso, tale comportamento non è garantito.

Per creare un'applicazione mista (/clr) parzialmente attendibile

  1. Per rimuovere la dipendenza da msvcm90.dll, è necessario specificare che questa libreria non dovrà essere inclusa dal linker utilizzando l'opzione /NODEFAULTLIB:msvcmrt.lib del linker. Per informazioni su come eseguire questa operazione mediante l'ambiente di sviluppo di Visual Studio o a livello di codice, vedere /NODEFAULTLIB (Ignora librerie).

  2. Aggiungere una delle librerie ptrustm alle dipendenze di input del linker. Se si genera l'applicazione in modalità di rilascio, utilizzare ptrustm.lib. Per la modalità di debug, utilizzare ptrustmd.lib. Per informazioni su come eseguire questa operazione mediante l'ambiente di sviluppo di Visual Studio o a livello di codice, vedere .File lib come input del linker.

Vedere anche

Concetti

Assembly misti (nativi e gestiti)

Inizializzazione di assembly misti

Supporto delle librerie per assembly misti

Riferimenti

/link (passaggio delle opzioni al linker)

Altre risorse

Sicurezza nel codice nativo e nel codice .NET Framework