首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows 2008:应用程序在__COMPAT_LAYER=ElevateCreateProcess时崩溃

Windows 2008:应用程序在__COMPAT_LAYER=ElevateCreateProcess时崩溃
EN

Stack Overflow用户
提问于 2012-02-03 23:34:05
回答 2查看 1.4K关注 0票数 2

有一个应用程序可以在Windows2008上正常启动,我们就叫它App1吧。

当相同的应用程序由另一个应用程序(启动器)启动时,App1会在secur32.dll中崩溃。研究表明,这两种情况的环境是不同的。

当应用程序崩溃时,它的环境有一个额外的变量__COMPAT_LAYER=ElevateCreateProcess。

在全局系统级别上设置__COMPAT_LAYER=asInvoker未解决此问题。将App1和Launcher添加到注册表HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers也无法解决此问题。

这两个程序在其清单中都具有以下权限: requestedExecutionLevel level="asInvoker“uiAccess="false”

UAC已关闭。Windows更新是最新的。唯一有帮助的解决方案是在中间插入另一个程序,以清除__COMPAT_LAYER或将其设置为asInvoker。

什么可能是ElevateCreateProcess的原因以及如何避免它?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-16 00:06:10

事实证明,该问题是由在Vista上崩溃的dll init过程中调用GetUserName引起的。相关帖子是https://groups.google.com/group/microsoft.public.win32.programmer.kernel/browse_thread/thread/ae1b1e4ecbb6b123/1e9fefd4c8b12452

票数 0
EN

Stack Overflow用户

发布于 2016-07-01 18:01:59

此行为的原因可能是您的启动器进程的命名。Windows使用ElevateCreateProcess标志扩充与命名模式"*launch*.exe“匹配的每个进程。这种笨拙的行为是在windows\apppatch\sysmain.sdb填充数据库中指定的。您可以通过安装和运行应用程序兼容性工具包来查看此信息。在“系统数据库(32位)/应用程序/自动运行”下,您可以找到此条目。虽然禁用可能也有风险,但在我的情况下,右键单击->禁用条目也不起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9131183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档