小弟初學C#,現在做專案碰見一個麻煩,就是需要在注銷用戶時(不是關機!)啟動一個自己撰寫的windows服務,本來想法時在程式中捕獲注銷訊息,然后啟動服務,但是注銷訊息是成功捕獲了,但是利用sc.exe啟動服務失敗了
uj5u.com熱心網友回復:
windows大神來告訴你gpedit.msc打開組策略,“用戶配置” -> “Windows設定” -> “腳本(登錄/注銷)”,在右邊選擇“注銷”
uj5u.com熱心網友回復:
抱歉你說的小弟看不太懂。我是想在代碼里實作啟動服務的功能。
uj5u.com熱心網友回復:
sc啟動服務的時候回傳什么結果?沒有權限?還是引數錯誤?net start命令也可以啟動服務。另外,系統服務有兩個name,一個是servicename,一個是displayname,用sc或者net start命令啟動的時候,需要指定它的service name。
進一步說,你現在這個場景本身也沒必要死摳著服務,可以用process.start來執行服務對應的可執行程式,和sc是一回事。
或者再換一個思路,可以在我上面說的設定里直接去設定“當用戶注銷里運行指定程式”,這項設定是windows自帶的功能
uj5u.com熱心網友回復:
提示的是因為視窗站已關閉,應用程式初始化失敗。用了net start 也是一樣的問題。,有時候還會提示應用程式正常初始化0000142失敗。因為他們專案框架已經做好了。只能選擇在一個特定的程式中啟動服務,所以我也是蠻糾結的。在用戶注銷以后也能使用process.start嗎
uj5u.com熱心網友回復:
用戶注銷的時候,跟當前會話有關的程式都會被關閉,你碰到的問題應該是在注銷程序中嘗試運行任務。所以推薦你在windows的注銷設定里運行腳本,這樣它會在注銷之前執行它,執行完才開始注銷。服務本質上也是可執行的程式,在這個時候,你就不要用A.exe運行B.exe了,直接在WINDOWS的注銷腳本設定里,添加上B.exe就可以。uj5u.com熱心網友回復:
請問可以通過C#操作windows注銷腳本嗎,搜了半天沒搜到,多謝大神了,膜拜中uj5u.com熱心網友回復:
多謝大神,已經解決了,我用的這一行代碼:if (control.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)
{
control.Start();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/122982.html
標籤:網絡通信
上一篇:用戶內網服務器192.168.1.10做了公網的埠映射,但只想要允許外網IP 10.168.0.33來訪問,禁止其他外網地址訪問,怎么做?
