C#自定义操作DLL – 访问被拒绝

这似乎是一个环境问题,因为它正在影响一个用户(据我们所知)。

我们使用一个C#自定义动作的DLL,这取决于我们的MSI实用程序的DLL。 当使用这些文件调用第一个自定义操作时,用户正在获取:

SFXCA: Extracting custom action to temporary directory: C:\Windows\Installer\MSIBAA4.tmp-\ SFXCA: Binding to CLR version v4.0.30319 Calling custom action CustomActions!CustomActions.CustomActions.InitializeInstallationValues Exception thrown by custom action: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileLoadException: Could not load file or assembly 'InstallerUtils, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Access is denied. at CustomActions.CustomActions.InitializeInstallationValues(Session session) --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object parameters, Object arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture) at Microsoft.Deployment.WindowsInstaller.CustomActionProxy.InvokeCustomAction(Int32sessionHandle, String entryPoint, IntPtr remotingDelegatePtr) CustomAction InitializeProperties returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox) 

由于MSI可以编写文件但不能读取文件,在我看来,某种forms的安全软件/策略可能就位; 有没有一个Windows API可以让我确定为什么:

访问被拒绝

询问客户安装了哪些防病毒/恶意软件产品,并让他们禁用它们。 重新确认这是否是问题。

如果这不起作用谷歌搜索“无法加载文件或程序集访问被拒绝”,并忽略任何谈论ASP.NET的线程。 DTF不会编译为临时的Internet文件目录,因此不相关。 那台机器上的东西干扰了你的进程加载它所需要的程序集。

如果这是一个更加恶意的防病毒的东西,你可以尝试重建DLL,看看签名不再使扫描器触发虚惊一场。 你也可以尝试代码签名。

我曾经在一个90年代的项目中工作过,在这个项目中,IBM合作伙伴使用他们自己的IBM防病毒软件,在运行我们的安装程序时遇到了一个构建问题,而下一个构建版本也没有了。 他们对我们(我们是EDS,所以他们自然恨我们)坚持说我们被遏制,但我们没有。