一個windows服務程式,登錄身份是本地系統賬戶,程式中需要用CreateProcess創建一個子行程,當服務屬性選擇不允許服務與桌面互動時,CreateProcess回傳成功,但GetExitCodeProcess獲取到子行程的回傳碼是C0000142。實際子行程并沒有創建成功。郁悶的是這種情況并不是每次執行都會出現,有時失敗后重復1次就可以正常執行,有時重試很多次也無法成功,有時跑一天都很正常,沒有找到規律。
服務型別選了允許服務與桌面互動時還沒有發現這種情況,但是win7上執行會有彈出互動式服務檢測的提示,不太友好。
網上搜到了stackoverflow上的問題貼,沒發現合適的解決方法,因為這個服務啟動的子行程不是自己開發的,沒法修改子行程的原始碼。
windows官網上有session,station和desktop的解釋也沒太搞明白,大約是要用一個登錄的用戶去執行子行程。有沒有遇到過類似情況的朋友給一個解決方案:選擇不允許與桌面互動時可以成功創建子行程,選擇允許與桌面互動時不彈出互動式服務檢測提示,不要用停止Interactive Services Detection服務的方法,太暴力了。
uj5u.com熱心網友回復:
我記得服務在啟動的時候,還沒有進入桌面,也沒有啟動user,所以服務根本不知道現在是哪個用戶在啟動。不知道能不能幫到。uj5u.com熱心網友回復:
如果注冊成本地服務,不需要用戶登錄就可以啟動,權限是local system轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/94139.html
上一篇:求一個lumion 8
