加载依赖.dll .NET时访问被拒绝

时间:2009-11-04 15:06:17

标签: c# winforms permissions assemblies

好,

我们有一个.NET WinForms应用程序,它依赖于在XP机器上运行的几个.NET dll,它连接到大型域中的网络。

一个小故事,定义了问题。

我们在客户端计算机上部署此应用程序,同时以管理员身份登录,并且一切正常。

然后我们登录了一个较低的私有帐户,并且低并且看到该应用程序无法启动,但这是预期的

所以我们让他们的IT部门进行文件夹读/写访问(因为我们在那里使用文件夹来保存临时文件)并且他们允许该用户执行.exe。 / p>

现在启动可执行文件,应用程序运行( yay )但是我们让它执行一个需要其中一个依赖(托管)dll的代码的操作......

抛出一个Exeception,声明“程序集”xxxx.dll“无法加载(访问被拒绝)”我的IT部门确信dll具有与主可执行文件相同的文件权限(并快速查看)在较低权限的用户可以看到的安全设置,它确实出现了这种方式)并且它们没有像XP有时那样设置为“阻止”。

因此,问题更多的是可能引起这种想法的可能的想法......

编辑:原来是文件权限是问题,并且有问题的IT部门没有检查到权限是否已应用于所有子对象。因为我无法接受你所有这四个好主意的答案,所以我已经给你所有的投票。

4 个答案:

答案 0 :(得分:2)

用户可以访问错误消息中列出的DLL,但他们是否可以访问该DLL需要的所有DLL?查看Dependency Walker之类的内容,找到可能需要的任何DLL。

答案 1 :(得分:1)

几个可能的问题,一些在此详述:http://msdn.microsoft.com/en-us/library/ab4eace3.aspx

您可能要求加载一个程序集,该程序集的安全性要求大于您的主应用程序。 (请求权限:http://msdn.microsoft.com/en-us/library/yd267cce.aspx

如果您正在运行完全信任,则不太可能,但如果您正在加载的DLL在网络上,请确保您信任该位置:(信任共享:http://blogs.msdn.com/shawnfa/archive/2004/12/30/344554.aspx

答案 2 :(得分:1)

DLL是否访问不允许较低权限用户访问的注册表或其他系统文件夹?发生错误时它想做什么?

您还可以检查域是否存在某种干扰DLL尝试执行操作的组策略。

答案 3 :(得分:1)

默认情况下,.NET不信任来自非本地驱动器的程序集。

有关允许信任特定网络位置的说明,请参阅http://msdn.microsoft.com/en-us/library/zdc263t0.aspx