2016-06-06 2 views
0

Как я могу проверить параметр безопасности загруженной сборки во время выполнения с C# .NET 2.0 (VS 2005)? Я загружаю сборку:Запрос параметров безопасности CAS для сборки во время выполнения - C# .NET 2.0

Сборка externalAssembly = Assembly.LoadFrom (путь);

Может быть, путь локальный или это удаленный UNC-путь (сетевой путь).

Если это удаленный сетевой путь, пользователь должен установить CAS на «fulltrust» с помощью caspol.exe, чтобы правильно запустить приложение. Как я могу проверить это во время выполнения, если CAS был настроен правильно?

Я видел, .NET 4.0 предоставляет свойство IsFullyTrusted для этой цели.

К сожалению, мне все еще нужно использовать VS 2005 для моего проекта.

С уважением Том

ответ

0

После того как я сделал домашнее задание и выкопал в код доступа безопасности немного, я надеюсь, я нашел решение для меня до сих пор. Мне нужно только две строки кода:

Assembly externalAssembly = Assembly.LoadFrom(path); 

// Retrieve the permission set of the external assembly 
PermissionSet permSet = SecurityManager.ResolvePolicy(externalAssembly.Evidence); 
if(!permSet.IsUnrestricted()) 
{ 
    throw new Exception("Assembly is not fully trusted!"); 
} 

Если сборка имеет неограниченное разрешение, IsUnrestricted() возвращает истину, а совокупность разрешений в permSet пуста.

Если он ограничен, возвращается false, а в permSet перечислены разрешения, которые были назначены сборке с помощью разрешения политики .NET.

Надеется, что это помогает кто-то в будущем

Том

0

Попробуйте это:

public static bool IsFullyTrusted() 
{ 
    try 
    { 
     new PermissionSet(PermissionState.Unrestricted).Demand(); 
     return true; 
    } 
    catch (SecurityException) 
    { 
     return false; 
    } 
} 
+0

Я не могу видеть, если это решение для меня: Я думаю, что с этим кодом, я могу проверить, если мой собственный код, на самом деле работает, полностью доверяется. Но я должен проверить, если внешняя сборка, которую я только что загрузил, полностью доверена. Возможно, это было загружено через сетевой ресурс, который не полностью доверен и имеет только более низкие права интрасети. –

Смежные вопросы