using namespace System;
using namespace System::Reflection;
using namespace System::Security::Policy;
//for evidence object
using namespace System::Security;
//for securityzone object
using namespace System::Collections;
//for IEnumerator
int main()
{
// Create appdomainsetup information for the new appdomain.
AppDomainSetup^ domaininfo = gcnew AppDomainSetup;
domaininfo->ApplicationBase = System::Environment::CurrentDirectory;
domaininfo->ConfigurationFile = System::Environment::CurrentDirectory + "\\ADCreateDomain.exe.config";
domaininfo->ApplicationName = "MyApplication";
domaininfo->LicenseFile = System::Environment::CurrentDirectory + "\\license.txt";
//Create evidence for new appdomain.
Evidence^ adevidence = AppDomain::CurrentDomain->Evidence;
//Add the zone and url information to restrict permissions assigned to the appdomain.
adevidence->AddHost( gcnew Url( "http://www.example.com" ) );
adevidence->AddHost( gcnew Zone( SecurityZone::Internet ) );
// Create the application domain.
AppDomain^ newDomain = AppDomain::CreateDomain( "MyDomain", adevidence, domaininfo );
// Write out the application domain information.
Console::WriteLine( "Host domain: {0}", AppDomain::CurrentDomain->FriendlyName );
Console::WriteLine( "child domain: {0}", newDomain->FriendlyName );
Console::WriteLine();
Console::WriteLine( "Application base is: {0}", newDomain->SetupInformation->ApplicationBase );
Console::WriteLine( "Configuration file is: {0}", newDomain->SetupInformation->ConfigurationFile );
Console::WriteLine( "Application name is: {0}", newDomain->SetupInformation->ApplicationName );
Console::WriteLine( "License file is: {0}", newDomain->SetupInformation->LicenseFile );
IEnumerator^ newevidenceenum = newDomain->Evidence->GetEnumerator();
while ( newevidenceenum->MoveNext() )
Console::WriteLine( newevidenceenum->Current );
AppDomain::Unload( newDomain );
}