Architecture Net



         

Подтверждение


В основе политики безопасности лежат наборы правил, устанавливаемые администраторами. Защита .NET может использовать эти правила для проведения той или иной политики. С помощью подтверждения, представленного разрешениями для личности, определяется проводимая политика.
В классе AppDomain имеется функция ExecuteAssembly, которая заставляет сборку выполняться. Ее единственным аргументом является экземпляр класса Evidence (Подтверждение). Этот класс является коллекцией объектов, которая представляет личность сборки, и в то же время является коллекцией объектов, которые представляют подтверждение.
Сказанное иллюстрируется примером Evidence (Подтверждение). При его выполнении получится коллекция подтверждений, ассоциированная со строгим именем сборки, а также распечатаются соответствующие значения.

Evidence *ev = AppDomain::CurrentDomain->Evidence;
lEnumerator *iEnum = ev->GetEnumerator();
bool bNext; // логическая (булева) переменная bNext
Console::WriteLine(
"Evidence Enumerator has {0} members",
// "Перечисление Evidence имеет {0} членов "
_box(ev->Count)}; bNext = iEnum->MoveNext(); while (bNext == true) // пока (bNext == истина) {
Object *x = iEnum->Current;
Type *t = x->GetType();
Console::WriteLine(t->ToString());
if (t == _typeof(Zone)) // если Зона
{
Zone *zone = dynamic_cast<Zone *>(x); // Зона Console::WriteLine(
" {0}", _box(zone->SecurityZone)); // зона
}
else if (t == _typeof(Url)) // если Url
{
Url *url = dynamic_cast<Url *>(x); Console::WriteLine(
" {0}", url->Value); // Значение }
else if (t == _typeof(Hash)) {
Hash *hash = dynamic_cast<Hash *>(x); unsigned char mdSHash _gc [] = hash->MD5; unsigned char shalHash _gc [] = hash->SHAl; Console::WriteLine(
MD5 Hash of Assembly:"); Console::Write(" "); for(int i = 0; i < md5Hash->Length; i++)
Console::Write(mdSHash[i]); // Запись Console::WriteLine(); Console::WriteLine(
SHA1 Hash of Assembly:"); Console::Write(" "); // Запись forfint i = 0; i < shalHash->Length; i++)
Console::Write(shalHash[i]); // Запись Console::WriteLine (); }
else if (t == _typeof(StrongName)) {
StrongName *sn = dynamic_cast<StrongName *>(x); Console::WriteLine(
" StrongName of Assembly is: {0} version: {!}", // версия sn->Name, // Имя sn->Version); // Версия Console::WriteLine(
" Assembly public key:"); Console::Write( // Запись ");
Console::WriteLine( sn->PublicKey); }
bNext = iEnum->MoveNext(); }




Содержание  Назад  Вперед