999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Windows服務意外停止的對策

2009-07-02 08:36:00劉德軍
新媒體研究 2009年10期
關鍵詞:對策服務

劉德軍

[摘要]針對Windows服務在運行過程中出現的意外停止的情況下實現無人值守定時檢測服務狀態,在服務停止后能自動啟動服務。

[關鍵詞]服務 意外停止 對策

中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0520032-02

一、前言

系統服務,是指執行指定系統功能的程序、例程或進程,以便支持其他程序,尤其是低層(接近硬件)程序,它是Windows系統的一個重要組成部分。

我院在做醫院管理系統與醫療保險系統接口過程中使用到一個外加進系統的醫保服務,但該服務在實際使用過程中經常出現服務不定時的意外停止,該服務的停止必然導致門診住院醫保病員的就診不能正常進行,也給計算機中心的管理帶來了很大的挑戰,每次服務停止后都必須在服務器上用手工執行啟動后才能恢復正常,為恢復該服務必須到機房手工處理,有時甚至在深夜。針對這一情況,如何才能在無人值守的情況下實現對該服務做監視和啟動處理操作呢?經過多次摸索,終于成功地利用VB的API函數及系統的計劃任務配合實現在無人值守情況下服務的

自動監視和服務停止后的自動啟動。

二、方法簡介

要實現對停止的服務重新啟動,需要做到以下幾個功能:

1.定時處理:利用系統的任務計劃指定程序定時執行一次,執行處理完成后直接退出程序。

2.檢測服務狀態及重新啟動服務:利用API函數構建的類模塊實現對系統的服務狀態進行服務狀態的檢測及停止狀態下的再啟動操作。

3.文件的讀寫功能:用API函數實現對配置文件的讀取,用write函數實現將啟動服務事件以追加方式寫入到歷史

文件中。

三、程序實現

(一)準備工作

新建一個標準工程,名稱為[服務類],在工程中創建一個窗體,名稱為[frmService];在工程資源管理器中新建一個模塊,名稱為[mdlService];在工程資源管理器中新建一個類模塊,名稱為[clsService]。如圖1所示。

(二)程序代碼

1.窗體代碼

Option Explicit

Private Sub Form_Load()

iniPath = App.Path + "service.ini"

Dim mySrv As New clsService

Dim tService As String

'取需處理的服務

tService = GetFromINI("需監控服務", "名稱", iniPath)

mySrv.Name = tService

'當前服務狀態,如處理停止狀態則做啟動處理,否則退出程序

If mySrv.GetServiceStatus = SERVICE_STOPPED Then

'如啟動服務正常,則寫入歷史文件中備查

If mySrv.StartNTService = 0 Then

Open App.Path + "服務歷史.txt" For Append Shared As #1

Write #1, Format(Now, "yyyy-mm-dd hh:mm:ss") & "-" & tService & "服務意外停止,已重新執行了啟動。"

Close #1

End If

End If

End

End Sub

2.模塊代碼

Option Explicit

Public iniPath As String

Public ServiceName As String

Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, lpKeyName As Any, ByVal lpDefault As String, ByVal lpRetunedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

'取配置文件參數

Public Function GetFromINI(AppName As String, KeyName As String, FileName As String) As String

Dim RetStr As String

RetStr = String(255, Chr(0))

GetFromINI = Left(RetStr, GetPrivateProfileString(AppName, ByVal KeyName, "", RetStr, Len(RetStr), FileName))

End Function

3.類模塊代碼

Option Explicit

Private Const SC_MANAGER_CONNECT = &H1&

Private Const SERVICE_QUERY_STATUS = &H4&

Private Const SERVICE_START = &H10&

Public Enum SERVICE_START_TYPE

SERVICE_AUTO_START = 2&

SERVICE_DEMAND_START = 3&

SERVICE_DISABLED = &H4

End Enum

Public Enum SERVICE_STATE

SERVICE_STOPPED = &H1

SERVICE_START_PENDING = &H2

SERVICE_STOP_PENDING = &H3

SERVICE_RUNNING = &H4

SERVICE_CONTINUE_PENDING = &H5

SERVICE_PAUSE_PENDING = &H6

SERVICE_PAUSED = &H7

End Enum

Private Type SERVICE_STATUS

dwServiceType As Long

dwCurrentState As Long

dwControlsAccepted As Long

dwWin32ExitCode As Long

dwServiceSpecificExitCode As Long

dwCheckPoint As Long

dwWaitHint As Long

End Type

Private Declare Function OpenSCManager Lib "advapi32" Alias "OpenSCManagerW" _

(ByVal lpMachineName As Long, ByVal lpDatabaseName As Long, _

ByVal dwDesiredAccess As Long) As Long

Private Declare Function OpenService Lib "advapi32" Alias "OpenServiceW" _

(ByVal hSCManager As Long, ByVal lpServiceName As Long, _

ByVal dwDesiredAccess As Long) As Long

Private Declare Function QueryServiceStatus Lib "advapi32" (ByVal hService _

As Long, lpServiceStatus As SERVICE_STATUS) As Long

Private Declare Function CloseServiceHandle Lib "advapi32" _

(ByVal hSCObject As Long) As Long

Private Declare Function StartService Lib "advapi32" Alias "StartServiceW" _

(ByVal hService As Long, ByVal dwNumServiceArgs As Long, _

ByVal lpServiceArgVectors As Long) As Long

Private Service_Name As String

'查詢服務運行狀態,4運行,1停止

Public Function GetServiceStatus() As SERVICE_STATE

Dim hSCManager As Long, hService As Long, Status As SERVICE_STATUS

hSCManager = OpenSCManager(0&, 0&, SC_MANAGER_CONNECT)

If hSCManager Then

hService = OpenService(hSCManager, StrPtr(Service_Name), SERVICE_QUERY_STATUS)

If hService Then

If QueryServiceStatus(hService, Status) Then

GetServiceStatus = Status.dwCurrentState

End If

CloseServiceHandle hService

End If

CloseServiceHandle hSCManager

End If

End Function

'開始服務

Public Function StartNTService() As Long

Dim hSCManager As Long, hService As Long

hSCManager = OpenSCManager(0&, 0&, SC_MANAGER_CONNECT)

If hSCManager Then

hService = OpenService(hSCManager, StrPtr(Service_Name), SERVICE_START)

If hService Then

If StartService(hService, 0, 0) = 0 Then

StartNTService = Err.LastDllError

End If

CloseServiceHandle hService

Else

StartNTService = Err.LastDllError

End If

CloseServiceHandle hSCManager

Else

StartNTService = Err.LastDllError

End If

End Function

'服務名稱

Public Property Let Name(ByVal sSrvName As String)

Service_Name = sSrvName

End Property

(三)文件處理

新建一文本文件,改名為[Service.ini],且[Service.ini]要與[服務類.exe]文件放在同一個目錄下,打開[Service.ini]文件在其中輸入如下內容(注:此處用Alerter代替):

[需監控服務]

名稱=Alerter

(四)任務計劃處理

在“控制面板”中的“任務計劃”中添加該可執行文件[服務類.exe]即可,按提示設定完成后,再在新增的任務計劃中選擇“高級計劃選項”中選擇“重復任務”,指定每隔多長時間即運行一次即可。若業務要求響應快,時間間隔就小一些,否則就長一些,時間間隔可根據需要自定。

四、編程后記

通過上述程序,能自動實現服務意外停止后的啟動功能。該軟件在Windows XP+VB6(SP6)環境下調試運行通運行。

猜你喜歡
對策服務
診錯因 知對策
對策
服務在身邊 健康每一天
今日農業(2019年14期)2019-09-18 01:21:54
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
面對新高考的選擇、困惑及對策
關于職工隊伍穩定的認識和對策
活力(2019年22期)2019-03-16 12:47:28
防治“老慢支”有對策
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年15期)2019-01-03 12:11:33
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
主站蜘蛛池模板: 2021国产在线视频| 日韩精品成人网页视频在线| 99精品视频在线观看免费播放| 五月婷婷欧美| 色视频久久| 国产成人免费高清AⅤ| 免费a级毛片视频| 啪啪啪亚洲无码| 国产精品欧美亚洲韩国日本不卡| 国产黄色视频综合| 欧美日韩第三页| 91精品国产一区| 大香伊人久久| 午夜欧美理论2019理论| 日韩在线观看网站| 永久成人无码激情视频免费| 国产亚洲男人的天堂在线观看| 国产精品香蕉在线| 色天堂无毒不卡| 真人免费一级毛片一区二区| AV在线麻免费观看网站| 亚洲无线观看| 福利视频一区| 国产免费羞羞视频| 久久精品人人做人人综合试看| 午夜a视频| 在线观看av永久| 日本国产一区在线观看| 欧美精品在线免费| 欧美区一区二区三| 国产手机在线小视频免费观看| 国产二级毛片| 久久国产香蕉| 久久无码高潮喷水| 国产一级特黄aa级特黄裸毛片| 国产簧片免费在线播放| 亚洲色图欧美一区| 国内熟女少妇一线天| 色婷婷国产精品视频| 国产成人亚洲日韩欧美电影| 97在线免费视频| 国产毛片高清一级国语| 免费在线成人网| 亚洲九九视频| 国产人碰人摸人爱免费视频| 免费无码AV片在线观看国产| 精品免费在线视频| 国产91透明丝袜美腿在线| 日本欧美成人免费| 国产麻豆aⅴ精品无码| 人人艹人人爽| 久久亚洲中文字幕精品一区| 中文字幕欧美日韩高清| 一级毛片在线播放免费观看| 97色伦色在线综合视频| 在线免费看片a| 国产精品美女免费视频大全| 国产精品视频公开费视频| 日韩精品一区二区三区视频免费看| 精品五夜婷香蕉国产线看观看| 91麻豆国产精品91久久久| 亚洲第一综合天堂另类专| 亚洲天堂视频在线免费观看| 亚洲不卡网| 国产麻豆va精品视频| 国产精品99在线观看| 国产色婷婷| 99精品一区二区免费视频| 亚洲成在线观看| 国内精品视频在线| 国产三级韩国三级理| 99热最新网址| 欧美一级夜夜爽www| 亚洲综合色在线| 日韩欧美国产另类| 国产精鲁鲁网在线视频| 亚洲精品在线影院| 久久特级毛片| 国产欧美精品一区二区| 成·人免费午夜无码视频在线观看| 欧洲一区二区三区无码| 日本人妻一区二区三区不卡影院|