Why does my .NET application crash when run from a network drive?

前端 未结 6 899
陌清茗
陌清茗 2020-11-29 06:37

My .NET application fails when run from a network drive even when the very same executable runs perfectly fine from a local hard drive?

I tried checking for \"Full t

相关标签:
6条回答
  • 2020-11-29 06:50

    If this is .NET 2.0 or greater, ClickOnce was created to really help with this deployment stuff. I only deploy to network shares using that.

    0 讨论(0)
  • 2020-11-29 06:53

    All I had to do was mark the files Read Only (possibly unrelated) and give all permissions except Full Control to Authenticated Users. I was encountering this issue before I did that, when I had the network share only setup for Domain Users.

    I discovered this workaround because neither the admin shares (\server\C$) nor my own PC's shares had this problem.

    Edit: App is targeting .NET 3.5, no SP1 here (version 3.5.7283)

    0 讨论(0)
  • 2020-11-29 06:59

    Did you try Using CasPol to Fully Trust a Share?

    0 讨论(0)
  • 2020-11-29 07:07

    It indeed has to do with the fact the apps on a network location are less trusted then on your local hdd (due to the default policy of the .NET framework).

    If I'm not mistaken Microsoft finally corrected this annoyance in .NET 3.5 SP1 (after a lot of developers complaining).

    I google'd it: .NET Framework 3.5 SP1 Allows managed code to be launched from a network share!

    0 讨论(0)
  • 2020-11-29 07:15

    You may have already done this, but you can use CasPol.exe to enable FullTrust for a specified network share.

    For example

    cd c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
    CasPol.exe -m -ag 1.2 -url file:///N:/your/network/path/* FullTrust
    

    More info here.

    0 讨论(0)
  • 2020-11-29 07:16

    This is security built in by microsoft into the .net framework. It's a way of stopping malware to be run locally with full priviliges, so you cannot change this programmatically in the code.

    What you need to do is increase the trust of specific assemblies. You do this in the .NET Framework Configuration (Control Panel->Administrative Tools), and has to be done on each computer.

    As with any security measures, it's a pain-in-the-ass, but will help the world to be less infected etc...

    0 讨论(0)
提交回复
热议问题