In che modo un'applicazione .NET può rilevare il livello di attendibilità in cui è in esecuzione?Rileva livello di attendibilità
In particolare, sto volendo un modo per fare qualcosa di simile
if (RUNNING IN GREATER THAN MEDIUM TRUST) {
// set private fields & properties using reflection
}
mia soluzione attuale è quella di utilizzare
public static class CodeAccessSecurityTool {
private static volatile bool _unrestrictedFeatureSet = false;
private static volatile bool _determinedUnrestrictedFeatureSet = false;
private static readonly object _threadLock = new object();
public static bool HasUnrestrictedFeatureSet {
get {
if (!_determinedUnrestrictedFeatureSet)
lock (_threadLock) {
if (!_determinedUnrestrictedFeatureSet) {
try {
// See if we're running in full trust
new PermissionSet(PermissionState.Unrestricted).Demand();
_unrestrictedFeatureSet = true;
} catch (SecurityException) {
_unrestrictedFeatureSet = false;
}
_determinedUnrestrictedFeatureSet = true;
}
}
return _unrestrictedFeatureSet;
}
}
}
Ma, è un po 'di hack.
[qui] (http://stackoverflow.com/a/11660205/969613) è qualcuno il controllo per vedere se sono in esecuzione come amministratore, potrebbe essere utile! – JMK
@ JMK: i privilegi del sistema operativo e i privilegi CLR non sono collegati (il codice Silverlight verrà eseguito in media affidabilità per tutti gli utenti, ad esempio). –
Ah ok, non lo sapevo, scusa! – JMK