登录
首页 >  Golang >  Go问答

服务启动时,使用 CreateProcessAsUserW() 启动的 Windows 计算器应用程序与 WerFault 发生冲突导致崩溃

来源:stackoverflow

时间:2024-02-09 12:50:29 492浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《服务启动时,使用 CreateProcessAsUserW() 启动的 Windows 计算器应用程序与 WerFault 发生冲突导致崩溃》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

Windows 服务是用 Go 编写的,并尝试使用 CreateProcessAsUserW() 在用户上下文中创建计算器进程。

它的代码的灵感来自于这个要点:

https://gist.github.com/LiamHaworth/1ac37f7fb6018293fc43f86993db24fc#file-native-go

大多数时候,计算器应用程序会在活动用户中启动;但是,有时应用程序启动失败,但 CreateProcessAsUserW() 不会返回任何错误。

使用 Procmon 检查发现,在启动计算器应用程序时,该应用程序崩溃并诉诸于收集 WerFault 转储。不幸的是,我在事件日志中没有看到详细的转储。

在 ProcMon 中观察到 WerFault 崩溃

使用 CreateProcessAsUserW 启动 3 个类似计算器应用程序的详细堆栈跟踪 - 前两个成功,第三个失败

此错误本质上是随机的,这并不会使应用程序变得可靠。我对从这里调试什么/如何调试非常一无所知,并且非常感谢您的帮助。


正确答案


该错误似乎是由于错误的编译环境而发生的,其中使用 x64 创建的二进制文件在arm64上运行。感谢大家的输入

今天关于《服务启动时,使用 CreateProcessAsUserW() 启动的 Windows 计算器应用程序与 WerFault 发生冲突导致崩溃》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>