【发布时间】:2015-06-02 13:54:47
【问题描述】:
我有一个用 Delphi XE5 编写的应用程序,主要针对 Windows 7,但也针对 Windows 8 和 8.1。它确实要求用户具有管理员权限。
它在我用户的几乎所有计算机上都可以正常工作,但在少数计算机上,它仅在 Windows 7 中为 Windows 7 选择兼容模式时才有效。
该错误在启动应用程序时直接显示为 Windows 对话框,说明:
[NameOfMyProgram] has stopped working.
Problem Event Name: APPCRASH
Fault Module Name: KERNELBASE.dll
Fault Module Version: 6.1.7601.18839
Exception code: 0eedfade
我的问题如下:为什么在 Windows 7 上存在适用于 Windows 7 的兼容模式,以及使用这种可能会以上述方式影响我的应用程序的模式意味着什么?
我无法找到任何有关此特定兼容模式的文档。
【问题讨论】:
-
为什么您的程序需要管理员权限?您的异常是未处理的 Delphi 异常。如果您添加 madExcept (或类似的),您就会知道是什么引发了异常。如果您实际上无法将调试器附加到问题上,那将是调试问题的正确方法。
-
您的应用程序实际上对其管理员权限做了什么?您是否以提升的权限运行它?您的应用在崩溃时正在做什么?
-
@Jerry 如前所述,它正在做的是无法启动。提问者不知道,因为该应用还没有显示任何 UI。
-
@David 这是一个包含大量旧代码的大型应用程序。我尝试在每个新版本中减少需要管理员权限的操作数量,但仍有很多工作要做。
-
安装应用程序兼容性工具包。运行兼容性管理器。从树中选择兼容模式。选择 Win7RTM。在右侧,您会发现已应用的垫片(elevatecreateprocess、emulatesortingvista、...)。查找解释here。