2013-06-18 5 views
1

Как проверить, работает ли мой код в режиме полного доверия? Я видел несколько предложений по проверке определенных разрешений с использованием метода SecurityManager.IsGranted(), но я специально хочу проверить полное доверие, поскольку для использования класса FileSystemWatcher недостаточно специального разрешения в режиме частичного доверия.Проверить полное доверие

+0

Какая версия .NET? Кроме того, где/когда вы хотите сделать чек и что вы хотите сделать с результатом? –

+0

.NET 3.5 и 4.0. У меня есть фрагмент кода, который удобен, но не имеет решающего значения для работы моего приложения, поэтому, если у меня нет полного доверия, он просто будет пропущен. Прямо сейчас самое лучшее, что я могу придумать, - попытаться запустить код и поймать SecurityException и игнорировать его. –

ответ

1

AFAIK, есть только один подход, который будет работать для прозрачного кода (который, предположительно, будет находиться под по меньшей мере 4.0, если он не полностью доверен) в версиях 3.5 и 4.0: требуется неограниченный набор разрешений и перехват SecurityException, если спрос выходит из строя. например .:

public static bool RunningWithFullTrust() 
{ 
    bool result; 
    try 
    { 
     (new PermissionSet(PermissionState.Unrestricted)).Demand(); 
     result = true; 
    } 
    catch (SecurityException) 
    { 
     result = false; 
    } 

    return result; 
} 

Это, вероятно, не дает никаких преимуществ вообще по сравнению с текущим подходом ловли и игнорируя исключение.

Для 4.0 существует новый метод AppDomain.IsFullyTrusted, который потенциально может быть полезен.