.NET: Ändern von Permissions bei ner geladenen AppDomain
semteX 16.10.2008 - 16:08 1056 2
semteX
begehrt die rostschaufel
|
Ich hab folgendes problem: Ich mach ne appdomain auf, instanziere in diesem appdomain ne klasse. Das ding ist also geladen und rennt. Jetzt will ich von dieser AppDomain die Rechte ändern (sind standardmäßig auf "execute only", also keine hdd, kein netzwerk, nix)... erstellen vom appdomain geschieht so: PermissionSet pset = new PermissionSet(PermissionState.None);
pset.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
System.AppDomain NewAppDomain = null;
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
NewAppDomain = AppDomain.CreateDomain("blabla", AppDomain.CurrentDomain.Evidence, setup, pset, CreateStrongName(Assembly.GetExecutingAssembly()));
RemoteObject o = (RemoteObject) NewAppDomain.CreateInstanceFromAndUnwrap(@"C:\Public\HelloWorldRemote.dll", "HelloWorldRemote.RemoteObject");
o.WriteNumber(9);
jetzt würde ich gerne für die Appdomain NewAppDomain die permissions ändern... weiß wer, ob das geht? wir vermuten im moment stark in richtung "nein, es geht ned", aber etwas fixes wär toll. fw ist .net 3.5 sp1 thx semteX
|
Triple-X
Addicted
|
Hast du dir schon mal AppDomain.ApplicationTrust.DefaultGrantSet angeschaut. also so ca. PermissionSet newPermissionSet= new PermissionSet(PermissionState.None);
newPermissionSet.AddPermission(new SecurityPermission(SecurityPermissionFlag.AllFlags));
NewAppDomain.ApplicationTrust.DefaultGrantSet = new PolicyStatement(newPermissionSet);
Habs nicht ausprobiert obs funktioniert, ich hoffe das es dich weiter bringt.
|
semteX
begehrt die rostschaufel
|
Hast du dir schon mal AppDomain.ApplicationTrust.DefaultGrantSet angeschaut.
also so ca.
PermissionSet newPermissionSet= new PermissionSet(PermissionState.None);
newPermissionSet.AddPermission(new SecurityPermission(SecurityPermissionFlag.AllFlags));
NewAppDomain.ApplicationTrust.DefaultGrantSet = new PolicyStatement(newPermissionSet);
Habs nicht ausprobiert obs funktioniert, ich hoffe das es dich weiter bringt. Danke, zieht aber leider ned... ich denke das geht nur, wenn ich fuer diese appdomain noch kein permissionset angegeben hab beim erstellen. o.WriteNumber(9);
PermissionSet ps2 = new PermissionSet(PermissionState.None);
NewAppDomain.ApplicationTrust.DefaultGrantSet = new PolicyStatement(ps2);
o.WriteNumber(9);
läuft leider durch :/
|