[quoted text, click to view] "Jas" <Jas@discussions.microsoft.com> wrote in message
news:14C94F27-6A8A-4A9B-A826-048517566E73@microsoft.com...
>I can't seem to understand what a linkdemand for a principalpermission
>means?
Pretty much nothing.
[quoted text, click to view] > If linkdemands are satisfied at JIT phase, how can it figure out the
> current
> principal before running the code?
It can't.
[quoted text, click to view] > For example, if I was going to use windowsprincipals to make RBS
> decisions,
> and I decorate a method with a linkdemand for principalpermission of
> "BUILTIN\ADMINISTARTORS" like this:
>
> [PrincipalPermissionAttribute(SecurityAction.LinkDemand, Role =
> @"BUILTIN\Administrators")]
> static void MethodA()
>
>
> how would the JIT figure this out without running the code? When I runthe
> above code, it always produces "SecurityException: Request for principal
> permission failed....". And it looks that is happening at JIT phase not
> runtime. This becomes even more of an issue when I'm using generic roles.
>
> Am I missing something?
You should be using SecurityAction.Demand, not SecuirtyAction.LinkDemand, in
your PrincipalPermission attributes (and, for other reasons, most other
permission request attributes with the occasional exception of identity
permissions). PrincipalPermission does not inherit from
CodeAccessPermission, and it does not perform a stack walk, so there's
essentially no point in even trying the link demand approach anyway (even if
it did work <g>).