W jaki sposób aplikacja .NET może wykryć poziom zaufania, w którym działa?Wykryj poziom zaufania
Konkretnie, ja chcąc sposób, aby zrobić coś takiego
if (RUNNING IN GREATER THAN MEDIUM TRUST) {
// set private fields & properties using reflection
}
mojego obecnego rozwiązania jest wykorzystanie
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;
}
}
}
Ale to trochę hack.
[tutaj] (http://stackoverflow.com/a/11660205/969613) jest ktoś, sprawdzając, czy są one działający jako administrator może być przydatny! – JMK
@JMK: Uprawnienia do systemu operacyjnego i CLR nie są połączone (kod silverlight będzie działać na średnim poziomie zaufania dla wszystkich użytkowników, na przykład). –
Ah ok, nie wiedziałem tego, przepraszam! – JMK