因為工作關係,仍持續使用Visual Basic 6,這套長老級的開發軟體。
不曉得在M$極力推廣 .NET 的技術下還能存在多少個開發用戶。
(我就是其中之一)



當然,我也不是那種墨守成規、閉門造車的人,在開發新系統的時候,也都已經採用 .NET 平台。
畢竟維護的系統太大,要由VB6轉變成VB.NET還需要一些時間吧…

最近,就遇到了棘手的問題,「如何在Win 2000/XP中重新啟動服務呢?」

在網路找了一些資料,原來可以透過WMI(Windows Management Instrumentation)的方式取得服務程序,
再進行啟動/關閉的動作。Sample Code如下述。


Private Function SwitchService(strSvcName As String, blnOpen As Boolean) As Boolean
Dim strWMIcls As String
Dim objSvc As Object

strWMIcls = "Win32_Service"
Set objSvc = GetObject("winmgmts:").InstancesOf(strWMIcls)(strWMIcls & ".Name=""" & strSvcName & """")
SwitchService = CallByName(objSvc, IIf(blnOpen, "StartService", "StopService"), 1) = 0
End Function

If SwitchService("W32Time", True) = True Then '只要將啟動/關閉的服務程序名稱帶入第一個引數
MsgBox "OK!"
End If


不過,我怎麼知道這個服務程序的名稱是什麼?有以下兩種方式:

1.很簡單,去[控制台]->[系統管理工具]->[服務]中,點兩下開啟服務,在跳出來的視窗中就有答案了。
 (下圖,是"服務名稱"非顯示名稱)
ServiceName


2.在系統機碼表中 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 也可以看出來各個服務程序的名稱。
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 jackywu612 的頭像
    jackywu612

    傑客邦

    jackywu612 發表在 痞客邦 留言(0) 人氣()