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

  • mattbudd / 204 / Mon, 15 Mar 2010 14:26:00 GMT / 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:

    network, app, slightly, different, though, dotnet, security, .net

  • http://dotnet.itags.org/dotnet-security/37910/«« Last Thread - Next Thread »»
    1. 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 |