+1  A: 

I'm not a CAS guru, but I suspect this may be due to the change in .NET 3.5 SP1 that allows code from a network share to run as Full Trust.

Edit: Brad Abrams states that a recompile/target is not needed to take advantage of this. I'd assume it works the same in reverse - that targeting 2.0 will not get you the old behaivor, if you have 3.5 SP1 on your machine.

An existing application does not have to be recompiled or changed in any way to take advantage of this. Your current 2.0 Applications will just work, you don't have to target anything new in 3.5..

I suppose a fresh (VM) install with only the 2.0 FX may be able to root this out as the cause.

Mark Brackett
Wow... that's a very surprising change to put in a service pack. The release notes KB article (951847) doesn't mention this at all.I went back and retargeted the exe for .NET 2.0, but the behavior didn't change. Either I'm not properly restricting the runtime version, or there's some other explanation for why mscorcfg sees one set of permissions and the running app sees another. If this discrepancy is _normal_, MSFT has gone off the deep end and given up on CAS. They seem to be moving that way with Silverlight anyway...
David Pope
A: 

The way the change works is that there is a new piece of evidence when launching a managed exe.When the exe is launched from the win32 CreateProcess API directly the managed exe is given full trust.

Of course, the .net configuration tool doesn't launch the exe, merely inspects it. This means that the evidence is different and affects the code group assigned to it. This in turn affects the permissions.

Pretty confusing.

More information can be found here:

msdn social

Brad Abrams blog

Ed Sykes
Those links explained it perfectly. Thanks! You'd think the 70-536 book authors would want to put a note in the errata...
David Pope