Gewusst wie: Aktivieren von Add-Ins mit unterschiedlicher Isolation und Sicherheit

Sie können ein Add-In aktivieren, indem Sie verschiedene Anwendungsdomänen- und Prozesskonfigurationen verwenden, die sich für Ihre Isolations- und Sicherheitsanforderungen eignen. Die Activate-Methodenüberladungen der AddInToken-Klasse stellen die folgenden Auswahlmöglichkeiten zum Aktivieren eines Add-Ins bereit:

  • In der Anwendungsdomäne des Add-Ins, die automatisch vom System generiert wird.

  • In einer vorhandenen Anwendungsdomäne mit oder ohne andere Add-Ins.

  • In derselben Umgebung (Anwendungsdomäne und Prozess) wie ein anderes Add-In.

  • In einem neuen, externen Prozess, der vom Prozess des Hosts getrennt ist. Der neue Prozess kann andere Add-Ins enthalten, die den Prozess ebenfalls nutzen.

Wenn Sie ein Add-In in einer neuen Anwendungsdomäne oder einem neuen Prozess aktivieren, müssen Sie eine Sicherheitsstufe mit einem AddInSecurityLevel-Objekt oder einem PermissionSet-Objekt angeben. Weitere Informationen zum Aktivieren von Add-Ins finden Sie unter Add-In-Aktivierung.

Die folgenden Verfahren verdeutlichen, wie diese Aktivierungsoptionen mit den Activate-Methodenüberladungen implementiert werden. In den Beispielen wird davon ausgegangen, dass das Pipelinesegment und Add-In-Caches erstellt wurden und dass ein oder mehrere Add-Ins gefunden und in einer AddInToken-Auflistung mit der Bezeichnung tokens zurückgegeben wurden. Weitere Informationen zum Erstellen der Cachedateien und zum Suchen von Add-Ins finden Sie unter Ermitteln von Add-Ins.

So aktivieren Sie ein Add-In in einer neuen Anwendungsdomäne

  • Verwenden Sie die Activate<T>(AddInSecurityLevel)-Methodenüberladung oder die Activate<T>(PermissionSet)-Methodenüberladung.

    
    //Ask the user which add-in they would like to use.
    AddInToken selectedToken = ChooseAddIn(tokens);
    
    //Activate the selected AddInToken in a new
    //application domain with the Internet trust level.
    Calculator CalcAddIn = selectedToken.Activate<Calculator>(AddInSecurityLevel.Internet);
    
    //Run the add-in using a custom method.
    RunCalculator(CalcAddIn);
    
    
    

So aktivieren Sie ein Add-In in derselben Anwendungsdomäne wie ein anderes Add-In

  • Verwenden Sie die Activate<T>(AppDomain)-Methodenüberladung.

    
    // Get the application domain
    // of an existing add-in (CalcAddIn).
    AddInController aiCtrl = AddInController.GetAddInController(CalcAddIn);
    AppDomain AddInAppDom = aiCtrl.AppDomain;
    
    // Activate another add-in in the same application domain.
    Calculator CalcAddIn3 =
    	selectedToken2.Activate<Calculator>(AddInAppDom);
    
    // Show that CalcAddIn3 was loaded
    // into CalcAddIn's application domain.
    AddInController aic = AddInController.GetAddInController(CalcAddIn3);
    Console.WriteLine("Add-in loaded into existing application domain: {0}",
    	aic.AppDomain.Equals(AddInAppDom));
    
    
    

So aktivieren Sie ein Add-In in derselben Anwendungsdomäne und in demselben Prozess wie ein anderes Add-In

  • Verwenden Sie die Activate<T>(AddInEnvironment)-Methodenüberladung.

    
    // Get the AddInController of a 
    // currently actived add-in (CalcAddIn).
    AddInController aiController = AddInController.GetAddInController(CalcAddIn);
    
    // Select another token.
    AddInToken selectedToken2 = ChooseAddIn(tokens);
    
    // Activate a second add-in, CalcAddIn2, in the same
    // appliation domain and process as the first add-in by passing
    // the first add-in's AddInEnvironment object to the Activate method.
    AddInEnvironment aiEnvironment = aiController.AddInEnvironment;
    Calculator CalcAddIn2 =
    	selectedToken2.Activate<Calculator>(aiEnvironment);
    
    // Get the AddInController for the second add-in to compare environments.
    AddInController aiController2 = AddInController.GetAddInController(CalcAddIn2);
    Console.WriteLine("Add-ins in same application domain: {0}", aiController.AppDomain.Equals(aiController2.AppDomain));
    Console.WriteLine("Add-ins in same process: {0}", aiEnvironment.Process.Equals(aiController2.AddInEnvironment.Process));
    
    
    

So aktivieren Sie ein Add-In in einem neuen Prozess

  • Verwenden Sie die Activate<T>(AddInProcess, AddInSecurityLevel)-Methodenüberladung oder die Activate<T>(AddInProcess, PermissionSet)-Methodenüberladung.

    
    // Create an external process.
    AddInProcess pExternal = new AddInProcess();
    
    // Activate an add-in in the external process
    // with a full trust security level.
    Calculator CalcAddIn4 =
    	selectedToken.Activate<Calculator>(pExternal,
    	AddInSecurityLevel.FullTrust);
    
    // Show that the add-in is an an external process
    // by verifying that it is not in the current (host's) process.
    AddInController AddinCtl = AddInController.GetAddInController(CalcAddIn4);
    Console.WriteLine("Add-in in host's process: {0}",
    	AddinCtl.AddInEnvironment.Process.IsCurrentProcess);
    
    
    
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft