----WindowsNTServer提供多種功能強大的服務(Service),例如FTP,WWW或遠程登錄服務,另外常用的數據庫服務器也是以Service的形式存在于NTServer上的,如Sybase SQLServer For NT。Service一般在NT啟動時自動啟動,在NT關機時停止。但是有時用戶可能想手工啟動、暫停、停止某項Service,這就需要在控制面板中進行配置,對于不太熟悉NT的用戶來說比較困難;對于軟件開發人員,有時需要在軟件中訪問和操作某項Service,甚至可能需要開發新Service的提供給用戶使用。上面兩種情況都可以通過對Service的編程來解決。對Service的編程涉及到NT的內核,比較復雜且相關資料較少,給軟件開發人員帶來很多困難,筆者通過對WindowsNT的API的分析找到了相應的編程方法,再此介紹給大家。
----在WindowsNT下,各種Service都存在service control manager database中,因此我們可以通過對service control manager database進行操作來實現對Service的編程。下面介紹常用的函數:
----Open SCManager 函數打開指定計算機上的service control manager database。其中參數lpszMachineName指定計算機名,若為空則指定為本機。參數lpszDatabaseName指定要打開的service control manager database,默認為空。
----參數fdwDesiredAccess指定操作的權限,可以為下面取值之一
SC_MANAGER_ALL_ACCESS //所有權限 SC_MANAGER_CONNECT //答應連接service control manager SC_MANAGER_CREATE_SERVICE //答應創建服務對象并把它加入service control manager database SC_MANAGER_ENUMERATE_SERVICE //答應枚舉service control manager database中的服務 SC_MANAGER_LOCK //答應鎖住service control manager database SC_MANAGER_QUERY_LOCK_STATUS //答應獲取servicecontrolmanagerdatabase的封鎖信息
----函數返回值:函數執行成功則返回一個指向service control manager database的句柄,失敗則返回NULL。