Как проверить, работает ли мой код в режиме полного доверия? Я видел несколько предложений по проверке определенных разрешений с использованием метода SecurityManager.IsGranted()
, но я специально хочу проверить полное доверие, поскольку для использования класса FileSystemWatcher недостаточно специального разрешения в режиме частичного доверия.Проверить полное доверие
1
A
ответ
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, который потенциально может быть полезен.
Какая версия .NET? Кроме того, где/когда вы хотите сделать чек и что вы хотите сделать с результатом? –
.NET 3.5 и 4.0. У меня есть фрагмент кода, который удобен, но не имеет решающего значения для работы моего приложения, поэтому, если у меня нет полного доверия, он просто будет пропущен. Прямо сейчас самое лучшее, что я могу придумать, - попытаться запустить код и поймать SecurityException и игнорировать его. –