標籤:
Microsoft Windows 服務(即,以前的 NT 服務)使您能夠建立在它們自己的 Windows 會話中可長時間啟動並執行可執行應用程式。這些服務可以在電腦啟動時自動啟動,可以暫停和重新啟動而且不顯示任何使用者介面。這種服務非常適合在伺服器上使用,或任何時候,為了不影響在同一台電腦上工作的其他使用者,需要長時間運行功能時使用。還可以在不同於登入使用者的特定使用者帳戶或預設電腦帳戶的安全上下文中運行服務。
開發
0.建立服務 1.安裝 2.啟動 3.停止 4.卸載 5.監控服務
建立服務:
1. 在c#中建立1個服務很簡單,只要繼承ServiceBase,重寫OnStart和OnStop方法就可以.(最快的是右鍵建立項)
OnStart方法是服務啟動的時候執行的
OnStop方法是服務停止的時候執行的
2. 通常會用System.Timers.Timer做定時任務處理.
安裝:
方式一(手動):
InstallUtil:
1. 開啟Visual Studio .NET命令提示
2. 改變路徑到你項目所在的bin\Debug檔案夾位置(如果你以Release模式編譯則在bin\Release檔案夾)
3. 執行命令“InstallUtil.exe MyWindowsService.exe”註冊這個服務,使它建立一個合適的註冊項。
方式二(代碼):
a.ManagedInstallerClass類:
var filePath = Process.GetCurrentProcess().MainModule.FileName(取當前進程檔案路徑)
var cmds = new []{filePath};
//var cmds = new []{"\\u",filePath};
ManagedInstallerClass.InstallHelper(cmds);
b.(sc命令是用來與服務控制管理員和服務進行通訊的命令列程式)
var cmd = "create myserver binpath= \""+程式絕對路徑名+"\" displayName= 服務名 start= auto"
Process.Start("sc", cmd);
啟動:
方式一(代碼):
a.Process.Start("sc", "start 服務名");
方式二(手動):
a.命令提示字元中:net start 服務名
b.運行"services.msc",找到服務名,啟動服務
停止:
方式一(代碼):
a.Process.Start("sc", "stop 服務名");
方式二(手動):
a.命令提示字元中:net stop 服務名
b.運行"services.msc",找到服務名,停止服務
卸載:
方式一(手動):
1. 開啟Visual Studio .NET命令提示
2. 改變路徑到你項目所在的bin\Debug檔案夾位置(如果你以Release模式編譯則在bin\Release檔案夾)
3. 執行命令“InstallUtil.exe /u MyWindowsService.exe”註冊這個服務,使它建立一個合適的註冊項。
方式二(代碼):
Process.Start("sc", "delete 服務名");
監控:
使用ServiceController來擷取服務狀態或對服務進行控制。
這個類可以擷取服務的狀態,屬性,對服務也可以進行啟動,停止操作
Microsoft Windows 服務