CreateProcessAsUserW() を使用してサービスから起動すると、WerFault の不整合が原因で Windows 電卓アプリケーションがクラッシュする

PHPz
リリース: 2024-02-05 22:51:07
転載
1208 人が閲覧しました

使用 CreateProcessAsUserW() 从服务启动时,Windows 计算器应用程序会因 WerFault 不一致而崩溃

質問の内容

Windows サービスは Go で書かれており、CreateProcessAsUserW() を使用してユーザー コンテキストで計算機を作成しようとしています。プロセス。

そのコードは次の要点からインスピレーションを得ています:

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

ほとんどの場合、電卓アプリケーションはアクティブ ユーザーで起動しますが、場合によっては、CreateProcessAsUserW() がエラーを返さずにアプリケーションが起動できないことがあります。

Procmon を使用した検査により、電卓アプリケーションの起動時にアプリケーションがクラッシュし、WerFault ダンプを収集する必要があることが判明しました。残念ながら、イベント ログには詳細なダンプが表示されません。

ProcMon で観察された WerFault クラッシュ

CreateProcessAsUserW を使用して 3 つの同様の電卓アプリケーションを起動した詳細なスタック トレース - 最初の 2 つは成功し、3 つ目は失敗します

このエラーは本質的にランダムであり、アプリケーションの信頼性を保証しません。ここから何を/どのようにデバッグするかについては非常に無知なので、助けていただければ幸いです。


正解


このエラーは、x64 で作成されたバイナリが arm64 で実行される間違ったコンパイル環境が原因で発生するようです。皆様のご意見ありがとうございます

以上がCreateProcessAsUserW() を使用してサービスから起動すると、WerFault の不整合が原因で Windows 電卓アプリケーションがクラッシュするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート