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

问题描述 投票:0回答:4

[我们有一个.NET WinForms应用程序,它具有几个依赖于.NET dll的文件,并且运行在XP计算机上,该计算机连接到大型域中的网络。

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

然后我们登录到一个较低的特权帐户,并且发现该应用程序无法启动,但是这是预期的

因此,我们让他们的IT部门对文件夹进行读/写访问((因为我们在其中使用文件夹来保存临时文件),并且他们允许该用户执行.exe。

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

抛出一个错误,指出“程序集“ xxxx.dll”无法加载(访问被拒绝)”,他们的IT部门向我保证,该DLL与主要可执行文件具有相同的文件许可权(并通过快速查看低权限用户可以看到的安全设置,它确实以这种方式出现),并且它们有时没有像XP那样被设置为“阻止”。

因此,问题更多是一条可能导致此问题的主意...

EDIT:事实证明,是文件权限是问题所在,而有关IT部门并未通过检查权限是否已应用于所有子对象来解决问题。由于我不能接受您对这样好的主意的所有4个答案,因此我给了大家一个投票。

c# winforms permissions assemblies
4个回答
2
投票

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


1
投票

几个可能的问题,这里有一些详细说明:http://msdn.microsoft.com/en-us/library/ab4eace3.aspx

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

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


1
投票

DLL是否访问注册表或较低特权用户不允许访问的其他系统文件夹?发生错误时该怎么办?

您还可以检查域是否具有某种干扰DLL试图执行的组策略。


1
投票

。NET默认不信任来自非本地驱动器的程序集。

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

© www.soinside.com 2019 - 2024. All rights reserved.