我有两台共享文件 SERVER1(Windows 2008)、SERVER2(Windows2012)的 Windows 服务器。
在一个共享上,我有一个 .exe 文件,这是一个非常简单的应用程序 - simple.exe。当它放在 SERVER1 上时,它运行良好 - 我可以直接从 SERVER1、Windows 7 工作站计算机和 Windows 10 运行它。当我将此 .exe 复制到 SERVER2 共享时 - 它仍然可以在 SERVER2、Windows 7 计算机上运行,但我在 Windows10 计算机上运行它时遇到了很大的问题。对我来说,这是最奇怪的部分:
- simple.exe 文件可以在 Windows 10 重启后直接运行
- 关闭应用程序后 - 它无法运行,它显示有关.NET 的错误(如下所述:https://support.microsoft.com/en-us/help/2715633/shim-errors-for-the--net-framework-version-and-platform-support)
- 关闭错误消息后,simple.exe 文件在该特定 Windows 10 计算机的网络共享上不可见(虽然它存在于共享中,并且可以从服务器和 Windows 7 计算机运行)
- 要使其再次可见,必须在 Windows 10 上终止 explore.exe 进程
环境基于 AD,在 SERVER1 和 SERVER2 上对 exe 文件的访问权限完全相同。当将 simple.exe 文件放在本地驱动器上时,它始终可以在 Windows10 上正常运行。
Windows 10 上的 UAC 被禁用,“Internet 选项”中添加了 SERVER2,添加了 EnableLinked... 注册表项。
禁用两侧的防火墙没有帮助 禁用两侧的 AV 也不起作用
我在事件查看器中发现错误:
Application: app1.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException
at System.Diagnostics.FileVersionInfo.GetVersionInfo(System.String)
at System.Configuration.ClientConfigPaths.SetNamesAndVersion(System.String, System.Reflection.Assembly, Boolean)
at System.Configuration.ClientConfigPaths..ctor(System.String, Boolean)
at System.Configuration.ClientConfigPaths.GetPaths(System.String, Boolean)
at System.Configuration.Internal.ConfigurationManagerInternal.System.Configuration.Internal.IConfigurationManagerInternal.get_ExeProductName()
at System.Configuration.ApplicationSettingsBase.get_Initializer()
at System.Configuration.ApplicationSettingsBase.CreateSetting(System.Reflection.PropertyInfo)
at System.Configuration.ApplicationSettingsBase.EnsureInitialized()
at System.Configuration.ApplicationSettingsBase.get_Properties()
at System.Configuration.SettingsBase.GetPropertyValueByName(System.String)
at System.Configuration.SettingsBase.get_Item(System.String)
at System.Configuration.ApplicationSettingsBase.GetPropertyValue(System.String)
at System.Configuration.ApplicationSettingsBase.get_Item(System.String)
at CodeComparator.Properties.Settings.get_login()
at CodeComparator.HomePage..ctor()
at CodeComparator.Program.Main()
Faulting application name: app1.exe, version: 0.0.0.0, time stamp: 0x5a27c260
Faulting module name: KERNELBASE.dll, version: 10.0.15063.726, time stamp: 0x32774c02
Exception code: 0xe0434352
Fault offset: 0x000ecbb2
Faulting process id: 0x38a8
Faulting application start time: 0x01d36f93614d1cf8
Faulting application path: I:\pathto\app1.exe
Faulting module path: C:\WINDOWS\System32\KERNELBASE.dll
Report Id: 5df493a4-d442-475e-8b85-1cd8f9d13acf
Faulting package full name:
Faulting package-relative application ID:
Application: app1.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an internal error in the .NET Runtime at IP 73A516E9 (738D0000) with exit code 80131506.
Faulting application name: app1.exe, version: 0.0.0.0, time stamp: 0x5a27c260
Faulting module name: clr.dll, version: 4.7.2115.0, time stamp: 0x59af88f2
Exception code: 0xc0000005
Fault offset: 0x001816e9
Faulting process id: 0x3850
Faulting application start time: 0x01d36f9364d4f9ba
Faulting application path: I:\pathto\app1.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: 31b42ecf-1b01-4e98-8bd0-f4032585bb26
Faulting package full name:
Faulting package-relative application ID:
更有趣的是:当尝试使用 WinDBG 调试 app1.exe 时 - 它运行良好,但 2 次之后却引发异常:
ModLoad: 00000000`5df20000 00000000`5df93000 C:\WINDOWS\System32\wow64win.dll
(22e8.28f0): Break instruction exception - code 80000003 (first chance)
ntdll!LdrpDoDebuggerBreak+0x30:
00007ff8`cea071b8 cc int 3
ModLoad: 00000000`744e0000 00000000`746a2000 C:\WINDOWS\SysWOW64\KERNELBASE.dll
(22e8.28f0): WOW64 breakpoint - code 4000001f (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
ntdll_779f0000!LdrpDoDebuggerBreak+0x2b:
77a9db9b cc int 3
由于我已经没有选择了,所以请提出任何想法。