有一个应用程序可以在Windows 2008下正常启动,我们称之为App1。
当同一个应用程序由另一个应用程序(启动器)启动时,App1 在 secur32.dll 中崩溃。研究表明,这两种情况的环境不同。
当应用程序崩溃时,它的环境有一个额外的变量__COMPAT_LAYER=ElevateCreateProcess。
在全局系统级别设置 __COMPAT_LAYER=asInvoker 并不能解决问题。将 App1 和 Launcher 添加到 HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 的注册表也不能解决它。
两个程序在其清单中都有以下权限:requestExecutionLevel level="asInvoker" uiAccess="false"
UAC 已关闭。Windows 更新是最新的。唯一有帮助的解决方案是在两者之间注入另一个程序,以清除 __COMPAT_LAYER 或将其设置为 asInvoker。
什么可能是 ElevateCreateProcess 的原因以及如何避免它?谢谢你。