0
我想將一個win32應用程序轉換爲服務。我使用CreateService()來創建應用程序作爲服務(使用下面的代碼)。啓動服務與參數
SC_HANDLE schService = CreateService
(
schSCManager, /* SCManager database */
pName, /* name of service */
pName, /* service name to display */
SERVICE_ALL_ACCESS, /* desired access */
SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS , /*service type*/
SERVICE_AUTO_START, /* start type */
SERVICE_ERROR_NORMAL, /* error control type */
pPath, /* service's binary */
NULL, /* no load ordering group */
NULL, /* no tag identifier */
NULL, /* no dependencies */
NULL, /* LocalSystem account */
NULL
); /* no password */
我能夠啓動該服務,如果在實際應用中沒有參數。如果我嘗試以參數開始服務,那麼它的創建問題。
LPCTSTR apszSvcArgv[32] = {"start","passwd"};
int nSvcArgc = 2;
if(StartService(schService, nSvcArgc,apszSvcArgv))
{
return TRUE;
}
我企圖把傳入的參數在主程序和它始終顯示的任何參數爲1
難道我做錯了什麼?是否有可能將這樣的參數傳遞給win32控制檯應用程序。
請糾正我,如果我錯了..提前
你不能只運行一個控制檯應用程序作爲服務通過調用魔'CreateService'函數的一個例子。 Windows服務是特殊類型的應用程序,特別設計爲服務。 –
感謝您的重播。但是我有一些疑問,如果沒有參數,我可以使用相同的方法創建和啓動服務。創建後,服務名稱將在services.msc中列出,啓動後,它將在任務管理器中正常顯示。埃文我能夠訪問該服務。我從http://www.codeproject.com/Articles/16488/A-Windows-Service-Application – DAC84
得到了這個想法。僅僅因爲你*能*做某事並不意味着這是一個好主意或正在工作。 CreateService函數實際上並不能驗證你的可執行文件是否被設計爲一個服務,它只是假設你知道你在做什麼。我不知道你爲什麼懷疑我剛剛說過的話,很明顯你會遇到問題,使得這項工作像你期望的那樣。原因是因爲服務與典型應用程序有很大不同。是的,互聯網上有錯誤的信息。鏈接文章的第一段顯示了對服務的嚴重誤解。 –