我有一个C#应用程序需要列出一个目录(Directory.GetFiles())并且还要访问其中一个返回的文件。如果我在本地运行应用程序它没有问题访问网络位置或本地位置,如果我从网络共享运行它然后我在访问共享时抛出安全异常。
我发现了为什么会这样: http://blogs.msdn.com/shawnfa/archive/2003/06/20/57023.aspx
然而,除非我误解,否则解决方案似乎是不切实际的。
1)我无法使用代码(几乎不可选) 2)签署程序集,然后让任何人使用它配置.NET策略以允许它? (这依赖于那些将使用它来改变他们的一个政策的人,我没有说出来?) 3)更改策略以允许对localintranet上的所有内容完全信任(不建议甚至可能在我的情况下)
我在这里遗漏了一些东西,这些选择似乎都不适合单独的应用程序被推送到我没有发言权的网络上。我会想到做一些事情就像从网络共享运行应用程序到列表一样简单目录中的文件不需要这样疯狂的箍来跳过才能使它工作。
任何人都对在这种情况下我能做些什么有任何想法?
答案 0 :(得分:4)
我认为这些主题会回答你的问题:
在.NET Framework 3.5 SP1中,此行为已更改,默认情况下允许程序运行网络共享。
是的,它感觉不太实际,但遗憾的是没有太多可以做的......
答案 1 :(得分:3)
我会将其部署为ClickOnce应用程序(VS2008中的“发布”等)。 ClickOnce可以位于网络共享上 - 您只需运行.application而不是.exe;这对于直接运行它没有任何安全问题起作用,并且它将一直工作回.NET 2.0。
答案 2 :(得分:1)
当您要求用户升级到.NET Framework 3.5 SP1时,此问题不再存在。请参阅以下有关该主题的博客文章:
.NET Framework 3.5 SP1 Allows managed code to be launched from a network share!