为什么.NET 4.0程序在安装了.NET 4.5的Windows Server 2012计算机上产生system.unauthorizedAccess错误?

时间:2015-07-08 21:41:20

标签: .net windows .net-4.0 .net-4.5

我收到的错误似乎只发生在运行Windows Server 2012的计算机上。我的应用程序是为.NET 4.0环境编写的。我的假设是.NET 4.5中的某些东西与我的应用程序不能很好地兼容。我没有其他想法。

该应用程序旨在创建PDF文件。它将通过调用自身的多个实例来完成此操作。主应用程序将调用另一个EXE文件,其中包含一组参数,用于指示要创建的PDF文件。

通过这种方式,我们可以调用多个EXE文件,从而加快进程。出于测试目的,我可以通过更改设置禁用对外部程序的调用,这将使用相同的程序创建所有PDF文件,只是更慢。

PDF文件将保存到本地硬盘上。用户应该可以访问所有本地驱动器和所有管理员权限。没有隐藏的文件夹。

一旦主应用程序调用自身的新实例,它就会崩溃。见下图。它既不能使用EXE文件,也不能写入本地驱动器。我不确定哪个;如果我需要创建一个日志,那么我可以确定应用程序是否无法调用EXE文件或者应用程序是否无法写入本地驱动器。

但是,如果我以管理员身份运行相同的应用程序,它会正确运行。从长远来看,以管理员身份运行不是一个可行的解决方案。这让我觉得这不是一个真正的.NET问题。

另一件事,如果我更改设置以在内部创建所有PDF文件,它将正确运行。这不需要提升权限。这证明用户应该可以访问驱动器。

在安装了.NET 4.0的旧系统Windows Server 2003上运行稳定(ish)几个月的应用程序。

我正在尝试将应用程序移动到新服务器Windows Server 2012,默认情况下安装了.NET 4.5或更高版本。

目标系统上没有调试器。在我的开发环境和旧的生产环境中,一切运行良好。

Picture of error message box

1 个答案:

答案 0 :(得分:1)

问题最终是我引用了共享的本地驱动器。出于某种原因,我没有获得共享驱动器的许可来写任何东西。我将输出路径从\\“c-drive \更改为c:\ ...。这解决了问题。