將應用程式註冊成後台服務程式

來源:互聯網
上載者:User
將任何應用程式註冊成後台服務程式,即:系統啟動後該程式可以自動啟動,並且在前台不要出現運行視窗。解決辦法:需要使用Windows提供的兩個工具instsrv.exe和srvany.exe。(Windows 2003資源工具包帶有)
  • instsrv:把win32程式變成系統服務。
  • srvany:將一個應用程式註冊為一個服務。即註冊一個系統服務,來啟動要啟動並執行應用程式。
基本用法:
  • instsrv  [服務名]  [應用程式絕對路徑]  (增加服務)
  • instsrv  [服務名]  REMOVE  (刪除服務)
  • instsrv  [服務名]  [srvany的絕對路徑]
一、應用程式具有服務功能(能響應服務控制台的查詢請求)使用instsrv.exe,指令格式:instsrv [服務名] [應用程式路徑]
執行完成後,在登錄機碼“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\”中自動增加項[服務名],並在其下成功添加各個索引值:
“DisplayName”   =服務顯示名     (字串值)
“Description”   =服務描述       (字串值)
“ImagePath”     =應用程式路徑   (可擴充字串值)
“ObjectName”    =”LocalSystem”  (字串值)
“Type”          =10(16進位)     (dword值)
“Start”         =2(16進位)      (dword值)
“ErrorControl”  =1(16進位)      (dword值)
如果不使用instsrv.exe,同樣可以在註冊表中手工添加實現:在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\”下建立一個項,項名為要顯示的服務名,並在其下建立以上各個鍵,填入索引值。這樣,一個服務就增加成功了,運行services.msc在服務管理員中可以看到,重啟電腦就會自動啟動服務。二、應用程式不具有服務功能(不能響應服務控制台的查詢請求)並不是所有程式都適合做系統服務,即便註冊成系統服務後也是無法啟動,這時就需要用到srvany.exe。具體步驟如下:
  1. 註冊服務:  path\instsrv  [服務名]  path\srvany.exe (同樣第一種情況,把[應用程式路徑]換為[srvany路徑]。)
  2. 運行regedit開啟註冊表,進入HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[服務名]
  3. 建立一個項,項名為Parameters,在項Parameters下建立如下建值:
  4. 右鍵-建立-字串值Application,值資料填入[應用程式絕對路徑],如:D:\RuijieSupport\MentoHUST\MentoHUST.exe
  5. 右鍵-建立-字串值AppDirectory,值資料填入[應用程式工作目錄],如:  D:\RuijieSupport\MentoHUST\
  6. 運行services.msc開啟服務管理,找到剛添加的服務,在屬性-登入中,勾選“允許服務與案頭互動”。
  7. 啟動服務。
說明:
  1. 執行instsrv命令如果出現出錯提示:- The fully qualified path to the .EXE must be given。則說明需要寫完整的路徑,並最好用引號包含。如:C:\Program Files\Windows Resource Kits\Tools> instsrv MentoHUST “C:\Program Files\Windows Resource Kits\Tools\srvany.exe”
  2. 在Parameters裡還可以添加很多索引值:
    AppDirectory  工作目錄
    AppParameters  你的應用程式的參數。
    AppEnvironment  運行環境變數。
三、以上方法同樣可以採用inf檔案實現。inf檔案格式:增加一個服務:
[Version]
Signature=”$WINDOWS NT$”
[DefaultInstall.Services]
AddService=MentoHUST,,My_AddService_Name
[My_AddService_Name]
DisplayName=MentoHUST Replace Ruijie
Description=銳捷替代
ServiceType=0×10
StartType=2
ErrorControl=0
ServiceBinary=%11%\MentoHUST.exe
刪除一個服務:
[Version]
Signature=”$WINDOWS NT$”
[DefaultInstall.Services]
DelService=MentoHUST
增加服務的inf檔案建立後,儲存,並執行命令:
rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 path\inf檔案名稱
執行完成後,同樣會看到:在註冊表中看到新增的服務項MentoHUST和索引值,在服務管理員會看到新增的服務MentoHUST。遇到不具有服務功能的應用程式,還是要開啟註冊表,接著上述操作,在建立的服務項下建立項Parameters,並添加索引值。說明:
  1. ServiceType 服務類型:0×10為獨立進程服務,0×20為共用進程服務(比如svchost);
  2. StartType 啟動類型:0 系統引導時載入,1 OS初始化時載入,2 由SCM(服務控制管理員)自動啟動,3 手動啟動,4 禁用。(注意,0和1隻能用於驅動程式)
  3. ErrorControl 錯誤控制:0 忽略,1 繼續並警告,2 切換到LastKnownGood的設定,3 藍屏。
  4. ServiceBinary 服務程式位置:%11%表示system32目錄,%10%表示系統目錄(WINNT或Windows),%12%為驅動目錄system32\drivers。也可以不用變數,直接使用全路徑。
  5. 服務名MentoHUST後面有兩個逗號,因為中間省略了一個不常用的參數flags。
  6. Description、ServiceType、StartType、ErrorControl四項是必須要有的,還有LoadOrderGroup、Dependencies等就不做詳述了。
使用inf檔案的優勢:
  1. 和用SC等工具一樣,inf檔案的效果是即時起效的,而匯入reg後必須重啟才有效。
  2. 匯出一個系統內建服務的登錄機碼,如果資料類型是REG_EXPAND_SZ,會看到一堆16進位代碼,可讀性很差。手動匯入註冊表以增加服務時,這樣定義ImagePath顯然很不方便,而用REG_SZ代替又會有些問題,比如不能用環境變數。用inf檔案完全沒有這個問題,ServiceBinary(即ImagePath)自動成為REG_EXPAND_SZ。
  3. inf檔案會自動為服務的登錄機碼添加一個Security子鍵,使它看起來更像系統內建的服務。
  4. AddService和DelService以及AddReg、DelReg可以同時且重複使用。即可以同時增加和刪除多個服務和登錄機碼。
四、通過修改註冊表來添加服務: 在登錄編輯程式,展開分支"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services" ,在右側邊窗格中顯示的就是本機安裝的服務項。如果要建立服務,只須點擊"編輯→建立→項" ,然後為此項命名,如"test";然後右擊該項,選擇"建立→字串值"或"建立→Dword值"即可。添加一個服務項目具體需要添加的索引值如下: 
"DisplayName",字串值,對應服務名稱; 
"Description",字串值,對應服務描述; 
"ImagePath",字串值,對應該服務程式所在的路徑;
"ObjectName",字串值,值為"LocalSystem",表示本地登入;
"ErrorControl",Dword值,值為"1"; 
"Start",Dword值,值為2表示自動運行,值為3表示手動運行,值為4表示禁止; 
"Type",Dword值,應用程式對應10,其它對應20。 
  另外,還要在"test"項下建立一個"Enum"項。如果有些必須通過srvany來載入的還必須添加另外的Parameters子項在該項中提供詳細的要加為服務的程式所在的路徑。而上面的那個路徑就需要指到srvany所在的路徑。  附:Windows 2003資源工具包 Windows Server 2003 Resource Kit Toolshttp://www.microsoft.com/downloads/en/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&DisplayLang=en

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.