用DELPHI編寫NT服務時,如何指定依存關係?

Q:我用DELPHI編寫了一個NT的服務,且設置爲自動啓動,可每次服務器重啓後,該服務不能自動啓動。我感受是因爲該服務啓動時使用了sqlserver數據庫,可能因爲sqlserver服務沒有啓動完成,致使該服務沒法啓動,因此我想指定該服務的依存關係,讓它在sqlserver服務啓動完畢後再啓動,如何作?
A:
方法1、
  procedure   TFooParserService.ServiceBeforeInstall(Sender:   TService);   
  begin   
      {$ifdef   BINDING_MSSQLSERVER}   
      Self.Dependencies.Add;   
      Self.Dependencies.Items[0].Name   :=   'MSSQLSERVER';   
      {$endif}   
  end;
方法2、
     在service的create事件中添加   
     TDependency(Dependencies.add).name:='MSSQLSERVER';

Q:如何調試?
A:
調試是能夠的:   

  最簡單的就是先做成程序,調試沒有問題了再轉成服務。 固然若是你不想這樣的話固然也能夠,方法以下:

  首先,在"Run|Parameters..."窗口「Parameters」中使用參數/Install運行服務程序,此時服務安裝到系統中,而後用服務管理器啓動安裝的服務,回到Delphi中,到菜單Run-->Attach   Process中,Attach到服務的Exe程序便可,若是找不到這個Exe,選擇下面的「Show   System   Processes」。此時能夠正常下斷點等。   
    
  須要注意的是:   
  1.Attach會跳出一個錯誤的窗口,不要管它,關閉後直接F4便可。   
  2.若是不調試後,要把/Install換成/UnInstall,卸載服務,而後把Parameters參數清空。反正只要提示大概意思是「服務已經存在」或者「服務不存在」,就要看Parameters的參數值。   
  3.再次調試/Install的時候,要把剛剛打開的服務管理器窗口關閉,否則會提示大概意思是「服務已經被禁止」。   

「七」樂無窮,盡在新浪新版博客,快來體驗啊~~~請點擊進入~html

相關文章
相關標籤/搜索