本發(fā)明涉及計算機應(yīng)用領(lǐng)域,具體而言,涉及一種在本地服務(wù)被禁用或停止情況下執(zhí)行本地服務(wù)功能的方法。
背景技術(shù):
microsoftwindows服務(wù)使用戶能夠創(chuàng)建在它們自己的windows會話中可長時間運行的可執(zhí)行應(yīng)用程序。這些服務(wù)可以在計算機啟動時自動啟動,可以暫停和重新啟動而且不顯示任何用戶界面。非常適用于需要長時間運行功能。還可以在不同于登錄用戶的特定用戶帳戶或默認(rèn)計算機帳戶的安全上下文中運行服務(wù),并且不影響在同一臺計算機上工作的其他用戶。
大量的windows桌面應(yīng)用程序使用microsoftwindows服務(wù)的方式為用戶提供:更新版本,推送最新信息,收集用戶日志信息以及各種需要長時間在后臺運行的功能服務(wù)。
現(xiàn)有軟件通常使用windows服務(wù)(windowsservice.exe)來更新程序,收集用戶日志信息以及推送最新的內(nèi)容。但是在windows服務(wù)(windowsservice.exe)被第三方安全軟件或者用戶禁用停止的情況下,服務(wù)的功能無法正常執(zhí)行,如圖1所示。
由于windows服務(wù)可以被第三方安全軟件或者由用戶手動禁用或者停止。如果被停止或者禁用就只能在主程序啟動的情況下去彈出對話框提示用戶去重新啟動,用戶體驗較差。如果用戶拒絕啟動,應(yīng)用程序?qū)⑹indows服務(wù)提供的所有功能。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種在本地服務(wù)被禁用或停止情況下執(zhí)行本地服務(wù)功能的方法,用以解決windows服務(wù)在被第三方安全軟件或者被用戶手動禁用或者停止的情況下,啟動應(yīng)用程序可以監(jiān)測到服務(wù)的停止并保證服務(wù)的功能能繼續(xù)運行。
為達(dá)到上述目的,本發(fā)明提供了一種在本地服務(wù)被禁用或停止情況下執(zhí)行本地服務(wù)功能的方法,包括以下步驟:
采用動態(tài)鏈接庫實現(xiàn)windows服務(wù)功能,通過服務(wù)插件調(diào)用所述動態(tài)鏈接庫;
在應(yīng)用程序啟動時,若windows服務(wù)程序無法啟動,則加載所述服務(wù)插件;
通過所述服務(wù)插件開啟windows服務(wù)功能,建立與服務(wù)器端的socket(套接字)通信連接,并啟動心跳檢測與服務(wù)器端的連接狀態(tài)。
進(jìn)一步地,上述在本地服務(wù)被禁用或停止情況下執(zhí)行本地服務(wù)功能的方法還包括以下步驟:
若判斷結(jié)果為windows服務(wù)程序已啟動,則直接建立與服務(wù)器端的套接字socket通信連接,并啟動心跳檢測與服務(wù)器端的連接狀態(tài)。
進(jìn)一步地,在判斷結(jié)果為windows服務(wù)程序未啟動時,還包括以下步驟:
啟動windows服務(wù)程序,若成功啟動windows服務(wù)程序,則直接建立與服務(wù)器端的套接字socket通信連接,并啟動心跳檢測與服務(wù)器端的連接狀態(tài);若未成功啟動windows服務(wù)程序,則加載所述服務(wù)插件;
通過所述服務(wù)插件開啟windows服務(wù)功能,建立與服務(wù)器端的套接字socket通信連接,并啟動心跳檢測與服務(wù)器端的連接狀態(tài)。
本發(fā)明技術(shù)上方案在本地服務(wù)被禁用或者停止的情況下,仍然可以執(zhí)行本地服務(wù)原有功能,在windows服務(wù)啟動的時候,服務(wù)程序加載服務(wù)插件實現(xiàn)服務(wù)的功能;在應(yīng)用程序啟動的時候,如果發(fā)現(xiàn)windows服務(wù)程序未能啟動,也加載服務(wù)插件來實現(xiàn)服務(wù)的功能,從而保證了在應(yīng)用程序啟動的時候,windows服務(wù)的功能能繼續(xù)正常執(zhí)行;同時,本發(fā)明中windows服務(wù)的功能采用動態(tài)鏈接庫的方式實現(xiàn),以插件的方式提供,使服務(wù)程序和應(yīng)用程序可以通過調(diào)用同一個動態(tài)鏈接庫來實現(xiàn)同樣的功能,加強了代碼的復(fù)用性和可擴展性。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為現(xiàn)有技術(shù)中windows服務(wù)啟動流程圖;
圖2為本發(fā)明一個實施例的在本地服務(wù)被禁用或停止情況下執(zhí)行本地服務(wù)功能的方法流程圖;
圖3為本發(fā)明另一個實施例的在本地服務(wù)被禁用或停止情況下執(zhí)行本地服務(wù)功能的方法流程圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有付出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
圖2為本發(fā)明一個實施例的在本地服務(wù)被禁用或停止情況下執(zhí)行本地服務(wù)功能的方法流程圖;如圖所示,在本地服務(wù)被禁用或停止情況下執(zhí)行本地服務(wù)功能的方法包括以下步驟:
采用動態(tài)鏈接庫實現(xiàn)windows服務(wù)功能,通過服務(wù)插件調(diào)用所述動態(tài)鏈接庫;
在應(yīng)用程序啟動時,若windows服務(wù)程序無法啟動,則加載所述服務(wù)插件;
通過所述服務(wù)插件開啟windows服務(wù)功能,建立與服務(wù)器端的套接字socket通信連接,并啟動心跳檢測與服務(wù)器端的連接狀態(tài)。
圖3為本發(fā)明另一個實施例的在本地服務(wù)被禁用或停止情況下執(zhí)行本地服務(wù)功能的方法流程圖;如圖所示,在本地服務(wù)被禁用或停止情況下執(zhí)行本地服務(wù)功能的方法還包括以下步驟:
若判斷結(jié)果為windows服務(wù)程序已啟動,則直接建立與服務(wù)器端的套接字socket通信連接,并啟動心跳檢測與服務(wù)器端的連接狀態(tài)。
進(jìn)一步地,在判斷結(jié)果為windows服務(wù)程序未啟動時,還包括以下步驟:
啟動windows服務(wù)程序,若成功啟動windows服務(wù)程序,則直接建立與服務(wù)器端的套接字socket通信連接,并啟動心跳檢測與服務(wù)器端的連接狀態(tài);若未成功啟動windows服務(wù)程序,則加載所述服務(wù)插件;
通過所述服務(wù)插件開啟windows服務(wù)功能,建立與服務(wù)器端的套接字socket通信連接,并啟動心跳檢測與服務(wù)器端的連接狀態(tài)。
本發(fā)明技術(shù)上方案在本地服務(wù)被禁用或者停止的情況下,仍然可以執(zhí)行本地服務(wù)原有功能,在windows服務(wù)啟動的時候,服務(wù)程序(windowsservice.exe)加載服務(wù)插件(service.dll)實現(xiàn)服務(wù)的功能;在應(yīng)用程序(appliction.exe)啟動的時候,如果發(fā)現(xiàn)windows服務(wù)程序未能啟動, 也加載服務(wù)插件來實現(xiàn)服務(wù)的功能,從而保證了在應(yīng)用程序啟動的時候,windows服務(wù)的功能能繼續(xù)正常執(zhí)行;同時,本發(fā)明中windows服務(wù)的功能采用動態(tài)鏈接庫的方式實現(xiàn),以插件的方式提供,使服務(wù)程序和應(yīng)用程序可以通過調(diào)用同一個動態(tài)鏈接庫來實現(xiàn)同樣的功能,加強了代碼的復(fù)用性和可擴展性。
本領(lǐng)域普通技術(shù)人員可以理解:附圖只是一個實施例的示意圖,附圖中的模塊或流程并不一定是實施本發(fā)明所必須的。
本領(lǐng)域普通技術(shù)人員可以理解:實施例中的裝置中的模塊可以按照實施例描述分布于實施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實施例的一個或多個裝置中。上述實施例的模塊可以合并為一個模塊,也可以進(jìn)一步拆分成多個子模塊。
最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實施例技術(shù)方案的精神和范圍。