Windows 服務是用Go 寫的,並嘗試使用CreateProcessAsUserW()
在使用者上下文中建立計算器進程。
它的程式碼的靈感來自於這個要點:
https://gist.github.com/LiamHaworth/1ac37f7fb6018293fc43f86993db24fc#file-native-go
大多數時候,計算器應用程式會在活動使用者中啟動;但是,有時應用程式啟動失敗,但 CreateProcessAsUserW()
不會回傳任何錯誤。
使用 Procmon 檢查發現,在啟動計算器應用程式時,該應用程式崩潰並訴諸於收集 WerFault 轉儲。不幸的是,我在事件日誌中沒有看到詳細的轉儲。
在 ProcMon 中觀察到 WerFault 崩潰
使用 CreateProcessAsUserW
啟動 3 個類似計算器應用程式的詳細堆疊追蹤 - 前兩個成功,第三個失敗
此錯誤本質上是隨機的,這並不會使應用程式變得可靠。我對從這裡調試什麼/如何調試非常一無所知,並且非常感謝您的幫助。
該錯誤似乎是由於錯誤的編譯環境而發生的,其中使用 x64 創建的二進位檔案在arm64上運行。感謝大家的輸入
以上是使用 CreateProcessAsUserW() 從服務啟動時,Windows 計算器應用程式會因 WerFault 不一致而崩潰的詳細內容。更多資訊請關注PHP中文網其他相關文章!