用ASP.NET控制Windows服務的開啟與關閉
效果如圖
代碼
首頁頁面需要添加引用
頁面的pageload中
實例化windows服務
protected void Page_Load(object sender, EventArgs e)
{
//此處代碼用於顯示頁面加載中的效果,可以無視。
ClientScript.RegisterClientScriptBlock(GetType(), "", initJavascript());
//實例化windows服務,LedIPTransfer為我自己寫的windows服務,大家可以用
service = new ServiceController("LedIPTransfer");
OnLoad();
}
至於服務名稱的獲取,查看服務詳情后復制顯示名稱即可。
用於顯示頁面當前服務的狀態
private void OnLoad()
{
//獲取服務的運行狀態
string state = service.Status.ToString();
switch (state)
{
case "Stopped":
lblState.Text = "服務已停止";
btnRestart.Enabled = false;
btnStart.Enabled = true;
btnStop.Enabled = false;
break;
case "Running":
lblState.Text = "服務運行中";
btnStart.Enabled = false;
btnRestart.Enabled = true;
break;
/* 以下服務狀態僅供參考,除非服務啟動很慢,一般不需進行如下設置
case "Paused":
lblState.Text = "服務已暫停";
break;
case "StartPending":
lblState.Text = "服務正在啟動";
break;
case "StopPending":
lblState.Text = "服務正在停止";
break;
case "ContinuePending":
lblState.Text = "服務即將繼續";
break;
case "PausePending":
lblState.Text = "服務即將暫停";
break;
* */
}
}
///<summary>
///啟動服務
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protectedvoid btnStart_Click(object sender,EventArgs e)
{
service.Start();
//等待服務到達運行狀態
service.WaitForStatus(ServiceControllerStatus.Running);
ClientScript.RegisterStartupScript(GetType(),"","window.location.href=window.location.href",true);
}
///<summary>
///停止服務
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protectedvoid btnStop_Click(object sender,EventArgs e)
{
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped);
ClientScript.RegisterStartupScript(GetType(),"","window.location.href=window.location.href",true);
}
///<summary>
///重啟服務
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protectedvoid btnRestart_Click(object sender,EventArgs e)
{
//停止服務
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped);
//啟動服務
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running);
ClientScript.RegisterStartupScript(GetType(),"","window.location.href=window.location.href",true);
}
ASP.NET 方式開啟服務,都需要很高的權限,所以如果你權限不夠是無法開啟的。
在system.web 下面加 identiy 可以模擬用戶具有管理員權限
<system.web>
<identity impersonate="true" userName="用戶名" password="密碼" />
</system.web>