好,
我们有一个.NET WinForms应用程序,它依赖于在XP机器上运行的几个.NET dll,它连接到大型域中的网络。
一个小故事,定义了问题。
我们在客户端计算机上部署此应用程序,同时以管理员身份登录,并且一切正常。
然后我们登录了一个较低的私有帐户,并且低并且看到该应用程序无法启动,但这是预期的。
所以我们让他们的IT部门进行文件夹读/写访问(因为我们在那里使用文件夹来保存临时文件)并且他们允许该用户执行.exe。 / p>
现在启动可执行文件,应用程序运行( yay )但是我们让它执行一个需要其中一个依赖(托管)dll的代码的操作......
抛出一个Exeception,声明“程序集”xxxx.dll“无法加载(访问被拒绝)”我的IT部门确信dll具有与主可执行文件相同的文件权限(并快速查看)在较低权限的用户可以看到的安全设置,它确实出现了这种方式)并且它们没有像XP有时那样设置为“阻止”。
因此,问题更多的是可能引起这种想法的可能的想法......
编辑:原来是文件权限是问题,并且有问题的IT部门没有检查到权限是否已应用于所有子对象。因为我无法接受你所有这四个好主意的答案,所以我已经给你所有的投票。
答案 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。