WindowsService服务程序开发
轉自:http://www.cnblogs.com/babycool/p/3534786.html?
?Windows服務:Microsoft Windows 服務(即,以前的 NT服務)使您能夠創建在它們自己的 Windows 會話中可長時間運行的可執行應用程序。這些服務可以在計算機啟動時自動啟動,可以暫停和重新啟動而且不顯示任何用戶界面。這使服務非常適合在服務器上使用,或任何時候,為了不影響在同一臺計算機上工作的其他用戶,需要長時間運行功能時使用。還可以在不同于登錄用戶的特定用戶帳戶或默認計算機帳戶的安全上下文中運行服務。(摘自百度百科)
?
一:創建
二:屬性
VS自動創建了一個Service1.cs的文件:
點擊F4,查看各個屬性的含義:
Autolog???????????????? 是否自動寫入系統的日志文件
CanHandlePowerEvent???? 服務時候接受電源事件
CanPauseAndContinue????????? 服務是否接受暫?;蚶^續運行的請求
CanShutdown 服務是否在運行它的計算機關閉時收到通知,以便能夠調用 OnShutDown 過程
CanStop????????????????????????????? 服務是否接受停止運行的請求
ServiceName?????????????????????? 服務名稱
三:功能
點擊F7查看Service1.cs的源代碼:
默認實現了OnStart和OnStop兩個方法。
以向一個文本文件中寫入數據操作為例:
?
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
/// <summary>
/// 服務啟動
/// http://www.cnblogs.com/babycool
/// </summary>
/// <param name="args"></param>
protected override void OnStart(string[] args)
{
string start = string.Format("{0}-{1}",DateTime.Now.ToString("yyyyMMddHHmmss"),"程序啟動了。");
Log(start);
}
/// <summary>
/// 服務停止
/// http://www.cnblogs.com/babycool
/// </summary>
protected override void OnStop()
{
string start = string.Format("{0}-{1}", DateTime.Now.ToString("yyyyMMddHHmmss"), "程序停止了。");
Log(start);
}
/// <summary>
/// 系統關閉
/// http://www.cnblogs.com/babycool
/// </summary>
protected override void OnShutdown()
{
string start = string.Format("{0}-{1}", DateTime.Now.ToString("yyyyMMddHHmmss"), "電腦關閉了。");
Log(start);
}
/*
/// <summary>
/// 服務暫停
/// http://www.cnblogs.com/babycool
/// </summary>
protected override void OnPause()
{
}
*/
/*
/// <summary>
/// 服務繼續
/// </summary>
protected override void OnContinue()
{
base.OnContinue();
}
*/
/*
/// <summary>
/// 系統電源狀態改變
/// </summary>
/// <param name="powerStatus"></param>
/// <returns></returns>
protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus)
{
return base.OnPowerEvent(powerStatus);
}
*/
void Log(string str)
{
string path = "E://def/6.txt";
using (StreamWriter sw = File.AppendText(path))
{
sw.WriteLine(str);
}
}
}
?
四:安裝程序
切換到 Service1.cs[設計] 界面,右擊選擇“添加安裝程序”。
這時項目中就添加了一個新類 ProjectInstaller 和兩個安裝組件 ServiceProcessInstaller 和 ServiceInstaller。
選中“serviceInstaller1” 控件,F4打開屬性面板,
Description ? ? ??服務程序的描述信息
DisplayName ? ??服務程序顯示的名稱
StartType ? ? ? ?指定如何啟動服務 ? ? ?
? ? ? ? ? ? ? ? ? ??Manual????? 服務安裝后,必須手動啟動
? ? ? ? ? ? ? ? ? ??Automatic??? 每次計算機重新啟動時,服務都會自動啟動
? ? ? ? ? ? ? ? ? ? Disabled???? 服務無法啟動
?
選中“serviceProcessInstaller1” 控件,F4打開屬性面板:
?
將serviceProcessInstaller類的Account屬性改為 LocalSystem。
這樣,不論是以哪個用戶登錄的系統,服務總會啟動。
五:生成
右擊 項目 選擇生成 ,不能通過F5來直接運行服務項目。
?
六:安裝卸載服務
選擇 VS組件 “Visual Studio命令提示(2010)” 工具,并以“管理員身份運行"(win7、win8系統下)。
注意:這里必須選擇“以管理員身份運行”,否則會報錯。
??
從命令行運行 Installutil.exe 目錄 ?命令,以項目中的已編譯可執行文件所在的目錄作為參數,安裝服務:
因為Installutil.exe程序默認在Windows\System32\目錄下,需要通過cmd命令 "cd" 切換目錄。
從命令行運行 Installutil.exe /u 目錄 ? 命令來卸載服務:
安裝服務:
installutil.exe?E:\XTestDemo\X_15_WindowsService\bin\Debug\X_15_WindowsService.exe
卸載服務:
installutil.exe /u?E:\XTestDemo\X_15_WindowsService\bin\Debug\X_15_WindowsService.exe
七:查看服務狀態
在“計算機管理”中,服務 下可以看到剛剛安裝的Service服務(cmd命令:services.msc---本地服務設置):
默認是停止狀態。右擊,選擇“啟動”,即可開啟服務。
通過“屬性”,可以查看到更詳細的信息。
?
總結
以上是生活随笔為你收集整理的WindowsService服务程序开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【OpenCV】直方图应用:直方图均衡化
- 下一篇: Node.js 多版本安装配置(Wind