"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

.NET: Ändern von Permissions bei ner geladenen AppDomain

semteX 16.10.2008 - 16:08 986 2
Posts

semteX

Risen from the banned
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14350
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:

Code: PHP
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
Avatar
Registered: Feb 2001
Location: Pregarten (OÖ)
Posts: 485
Hast du dir schon mal AppDomain.ApplicationTrust.DefaultGrantSet angeschaut.

also so ca.
Code: PHP
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

Risen from the banned
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14350
Zitat von Triple-X
Hast du dir schon mal AppDomain.ApplicationTrust.DefaultGrantSet angeschaut.

also so ca.
Code: PHP
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.

Code: PHP
      o.WriteNumber(9);
      PermissionSet ps2 = new PermissionSet(PermissionState.None);
      NewAppDomain.ApplicationTrust.DefaultGrantSet = new PolicyStatement(ps2);
      o.WriteNumber(9);

läuft leider durch :/
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz