2010-08-04 16 views
2

Je veux supprimer les autorisations de sécurité d'une classe que je n'ai pas accès à la source. Est-il possible de supprimer ou de modifier l'attribut par réflexion?Réflexion et attributs - suppression? modification? OU service Windows en pleine confiance?

[... PermissionSet (SecurityAction.InheritanceDemand, Name = "FullTrust"), PermissionSet (SecurityAction.LinkDemand, Name = "FullTrust")]


après réflexion, il est à moi que peut-être que cette approche du problème est erronée. Existe-t-il un moyen d'exécuter un service Windows en toute confiance afin que ses autorisations satisfassent aux exigences ci-dessus?

Répondre

2

Non - réflexion .NET est en lecture seule. Si vous souhaitez modifier un assemblage existant, regardez Mono Cecil, bien que la suppression d'un attribut & remplacer l'ensemble supprimerait toute signature de nom fort sur elle

+0

Bien que si vous allez utiliser Cecil, vous pouvez aussi bien démonter à l'aide ildasm, supprimer les attributs à la main, et en utilisant réassembler ilasm. Ou utilisez même Reflector pour effectuer une ingénierie inverse sur la source C#. –

+0

C'est la route que j'ai commencé à descendre. Je voulais juste voir s'il y avait d'autres options dont je n'étais pas au courant. –

+0

@Joshua FWIW faisant cela très probablement illégale ou à tout le moins en rupture de contrat du logiciel. –

0

Vous pouvez toujours créer une classe wrapper et donner à la classe wrapper permissions plus restreintes.

+0

Je veux donner des autorisations moins restreint. –