Home » Category » DotNet Security

DotNet Security: Yet another Network App question (slightly different though);

204| Mon, 26 May 2008 21:46:00 GMT| mattbudd| Comments (1)
Hello all,

I've looked through this newsgroup and saw lots of questions about running
an application from a network drive or a local network. I know that when you
do this, it puts the assembly into a different "zone" of trust which is more
restrictive.

In my situation this is a good thing. We don't want to allow our application
to be run over the network and want to force them to install it (and buy it)
on each local machine. The problem I'm having is that when you attempt to
run it off the network drive, it dies on you and you get a
System.Security.SecurityException unhandled exception. What I want to do is
basically catch this exception and then display a readable error message
explaining that it has to be run locally.

I've tried the following code at the very start of my Main() function:
[STAThread]
static void Main(string[] pasArgs)
{
try {
if
(System.Security.SecurityManager.ResolvePolicy(typ eof(frmMain).Assembly.Evid
ence).IsUnrestricted() == false) {
MessageBox.Show("Must run locally!");
return;
}
} catch (System.Security.SecurityException e) {
MessageBox.Show(e.ToString());
return;
}

But I still get the exception and neither of my messageboxes show. Any ideas
how to catch this exception?
- Matt

Keywords & Tags: network, app, slightly, different, though, dotnet, security, .net

URL: http://dotnet.itags.org/dotnet-security/37910/
 
«« Prev - Next »» 1 helpful answers below.
Hi Matt,

You would need to demand for an identity permission here, either Zone or
Url. But this on its own is easy to fake so you should think of additional
security checks such as strong name or/and the use of an intermediate caller
assembly which will have your security checks built-in (and properly
obfuscated if necessary).

Have a look at UrlIdentityPermission and ZoneIdentityPermission.

Thanks,
Fernando

"Matt Budd" <whoami2001ca...yahoo.ca> wrote in message
news:evhclEIWEHA.2520...TK2MSFTNGP12.phx.gbl...
> Hello all,
> I've looked through this newsgroup and saw lots of questions about running
> an application from a network drive or a local network. I know that when
> you
> do this, it puts the assembly into a different "zone" of trust which is
> more
> restrictive.
> In my situation this is a good thing. We don't want to allow our
> application
> to be run over the network and want to force them to install it (and buy
> it)
> on each local machine. The problem I'm having is that when you attempt to
> run it off the network drive, it dies on you and you get a
> System.Security.SecurityException unhandled exception. What I want to do
> is
> basically catch this exception and then display a readable error message
> explaining that it has to be run locally.
> I've tried the following code at the very start of my Main() function:
> [STAThread]
> static void Main(string[] pasArgs)
> {
> try {
> if
> (System.Security.SecurityManager.ResolvePolicy(typ eof(frmMain).Assembly.Evid
> ence).IsUnrestricted() == false) {
> MessageBox.Show("Must run locally!");
> return;
> }
> } catch (System.Security.SecurityException e) {
> MessageBox.Show(e.ToString());
> return;
> }
>
> But I still get the exception and neither of my messageboxes show. Any
> ideas
> how to catch this exception?
> - Matt
>


fernandovicariamsft | Mon, 26 May 2008 21:47:00 GMT |

DotNet Security Hot Answers

DotNet Security New questions

DotNet Security Related Categories