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 サイトの他の関連記事を参照してください。