欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#開(kāi)發(fā)Windows服務(wù)實(shí)例之實(shí)現(xiàn)禁止QQ運(yùn)行

 更新時(shí)間:2013年10月11日 11:46:26   作者:  
這篇文章主要介紹了通過(guò)C#開(kāi)發(fā)Windows服務(wù),查殺qq進(jìn)程的服務(wù)功能,需要的朋友可以參考下

本實(shí)例主要實(shí)現(xiàn)下面三個(gè)基本功能

1、C#開(kāi)發(fā)windows服務(wù)

2、禁止QQ等程序運(yùn)行

3、為windows服務(wù)創(chuàng)建自動(dòng)安裝程序

下面針對(duì)這三個(gè)基本功能進(jìn)行實(shí)現(xiàn)

一、C#開(kāi)發(fā)windows服務(wù)

Windows服務(wù)在VS以前的版本中叫NT服務(wù),在VS.NET啟用了新的名稱。用C#創(chuàng)建windows服務(wù)不是一件困難的事,下頁(yè)針對(duì)服務(wù)創(chuàng)建、啟動(dòng)、停止做詳細(xì)介紹

1、首先在vs中添加一winform程序KillService

2、在解決方案添加新項(xiàng)中添加Windows服務(wù)

3、打開(kāi)服務(wù)頁(yè)面,切換至代碼頁(yè)面有兩個(gè)方法如下:

復(fù)制代碼 代碼如下:

protected override void OnStart(string[] args)
{
   // TODO: 在此處添加代碼以啟動(dòng)服務(wù)。
}
protected override void OnStop()
{
// TODO: 在此處添加代碼以執(zhí)行停止服務(wù)所需的關(guān)閉操作。
}

當(dāng)服務(wù)啟動(dòng)之后一般會(huì)要求每隔幾秒或者幾分鐘刷新一次數(shù)據(jù),所以要用到一個(gè)定時(shí)器,在定時(shí)器里邊進(jìn)行業(yè)務(wù)操作。windows服務(wù)不能直接在VS下進(jìn)行調(diào)試,所以可以選擇使用日志形式記錄服務(wù)的各種啟動(dòng)停止或者異常的狀態(tài)。具體實(shí)現(xiàn)代碼如下:

復(fù)制代碼 代碼如下:

partial class Service1 : ServiceBase
    {
        static System.Timers.Timer oTimer_Get = new System.Timers.Timer();
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            // TODO: 在此處添加代碼以啟動(dòng)服務(wù)。
            AutoLog = false;
            FileLog.Success("服務(wù)已啟動(dòng)");
            oTimer_Get.Enabled = true;
            oTimer_Get.Interval = 10000;
            oTimer_Get.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent);
        }
        private void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e)
        {
            FileLog.Success("開(kāi)始發(fā)送");
            oTimer_Get.Enabled = false;
            try
            {
                //此處可進(jìn)行編寫(xiě)詳細(xì)的業(yè)務(wù)操作
            }
            catch (Exception ex)
            {
                FileLog.Error(ex.Source + "。" + ex.Message);
            }
            oTimer_Get.Enabled = true;
            FileLog.Success("結(jié)束發(fā)送");
        }
        protected override void OnStop()
        {
            // TODO: 在此處添加代碼以執(zhí)行停止服務(wù)所需的關(guān)閉操作。
            FileLog.Success("服務(wù)已停止");
            oTimer_Get.Enabled = false;
        }
    }

文件記錄類代碼

復(fù)制代碼 代碼如下:

/// <summary>
    /// 文件型日志記錄
    /// </summary>
    public static class FileLog
    {
        private static string sFilePath = System.Configuration.ConfigurationSettings.AppSettings["UserLog"];
        /// <summary>
        /// 錯(cuò)誤日志
        /// </summary>
        /// <param name="Message">錯(cuò)誤內(nèi)容</param>
        public static void Error(string Message)
        {
            try
            {
                if (!Directory.Exists(sFilePath))
                {
                    Directory.CreateDirectory(sFilePath);
                }
                string sFileName = sFilePath + "\\" + string.Format("{0}-Error.txt", DateTime.Now.ToString("yyyy-MM-dd"));
                string sContent = string.Format("{0}-- {1}\r\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Message);
                FileStream fs = new FileStream(sFileName, FileMode.Append);
                Byte[] b = Encoding.Default.GetBytes(sContent);
                fs.Write(b, 0, b.Length);
                fs.Close();
            }
            catch { }
        }
        /// <summary>
        /// 正確日志
        /// </summary>
        /// <param name="Message">正確內(nèi)容</param>
        public static void Success(string Message)
        {
            try
            {
                if (!Directory.Exists(sFilePath))
                {
                    Directory.CreateDirectory(sFilePath);
                }
                string sFileName = sFilePath + "\\" + string.Format("{0}-Success.txt", DateTime.Now.ToString("yyyy-MM-dd"));
                string sContent = string.Format("{0}-- {1}\r\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Message);
                FileStream fs = new FileStream(sFileName, FileMode.Append);
                Byte[] b = Encoding.Default.GetBytes(sContent);
                fs.Write(b, 0, b.Length);
                fs.Close();
            }
            catch { }
        }
    }

4、服務(wù)需要一個(gè)啟動(dòng)入口,打開(kāi)program.cs文件在main函數(shù)里邊編寫(xiě)入口代碼如下:

復(fù)制代碼 代碼如下:

static class Program
    {
        /// <summary>
        /// 應(yīng)用程序的主入口點(diǎn)。
        /// </summary>
        [STAThread]
        static void Main()
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] {
              new Service1()
            };
            ServiceBase.Run(ServicesToRun);
        }
    }

到此windows服務(wù)編寫(xiě)完成,但是現(xiàn)在該服務(wù)沒(méi)有什么的業(yè)務(wù)操作功能。接下來(lái)實(shí)現(xiàn)禁止本機(jī)QQ程序運(yùn)行功能

二、禁止QQ等程序運(yùn)行

只需獲取本機(jī)所有運(yùn)行的進(jìn)行,通過(guò)Process.kill()方法結(jié)束該進(jìn)程即可

復(fù)制代碼 代碼如下:

Process[] process = Process.GetProcesses();
                for (int i = 0; i < process.Length; i++)
                {
                    if (process[i].ProcessName == "QQ")
                    {
                        process[i].Kill();
                    }
                }

將該操作放至windows服務(wù)中的業(yè)務(wù)操作模塊即可。

三、為windows服務(wù)創(chuàng)建自動(dòng)安裝程序

上面實(shí)現(xiàn)了windows服務(wù)基本的業(yè)務(wù)操作功能,下面為該windows服務(wù)創(chuàng)建自動(dòng)安裝程序,

1、切換至service.cs設(shè)計(jì)頁(yè)面,右鍵選擇添加安裝程序

2、這時(shí)項(xiàng)目中就添加了一個(gè)新類 ProjectInstaller 和兩個(gè)安裝組件 ServiceProcessInstaller 和 ServiceInstaller,并且服務(wù)的屬性值被復(fù)制到組件。

3、若要確定如何啟動(dòng)服務(wù),請(qǐng)右鍵 ServiceInstaller1屬性并將 StartType 屬性設(shè)置為適當(dāng)?shù)闹怠?/P>

Manual      服務(wù)安裝后,必須手動(dòng)啟動(dòng)。Automatic    每次計(jì)算機(jī)重新啟動(dòng)時(shí),服務(wù)都會(huì)自動(dòng)啟動(dòng)。Disabled     服務(wù)無(wú)法啟動(dòng)。

4、將serviceProcessInstaller類的Account屬性改為 LocalSystem這樣,不論是以哪個(gè)用戶登錄的系統(tǒng),服務(wù)總會(huì)啟動(dòng)。

這些windows服務(wù)的安裝程序已經(jīng)完成。通過(guò)從生成菜單中選擇生成來(lái)生成項(xiàng)目。

注意   不要通過(guò)按 F5 鍵來(lái)運(yùn)行項(xiàng)目——不能以這種方式運(yùn)行服務(wù)項(xiàng)目。

5、創(chuàng)建啟動(dòng)和停止文件

安裝文件Install.bat實(shí)現(xiàn)如下:

cd %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe KillService.exe

Net Start 自動(dòng)查殺服務(wù)
sc config 自動(dòng)查殺服務(wù) start= auto 

KillService.exe是你生成的可執(zhí)行文件的路徑

自動(dòng)查殺服務(wù)是windows服務(wù)的名稱

停止文件Uninstall.bat文件的實(shí)現(xiàn)如下:

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u KillService.exe

KillService.exe是你生成的可執(zhí)行文件的路徑

PS:當(dāng)這兩個(gè)文件保存成功之后,執(zhí)行時(shí)一定要“以管理員身份運(yùn)行”,否則服務(wù)啟動(dòng)出錯(cuò)

如果服務(wù)安裝成功,可以在資源管理器中的服務(wù)查看到正在運(yùn)行的自動(dòng)查殺服務(wù)。

至此整個(gè)實(shí)例基本完成

相關(guān)文章

  • c# DataTable與不同結(jié)構(gòu)實(shí)體類轉(zhuǎn)換的方法實(shí)例

    c# DataTable與不同結(jié)構(gòu)實(shí)體類轉(zhuǎn)換的方法實(shí)例

    這篇文章主要介紹了c#的DataTable與不同結(jié)構(gòu)實(shí)體類轉(zhuǎn)換的方法實(shí)例,在大數(shù)據(jù)量的情況下很實(shí)用,大家可以參考使用
    2013-11-11
  • Unity游戲開(kāi)發(fā)之2048游戲的實(shí)現(xiàn)

    Unity游戲開(kāi)發(fā)之2048游戲的實(shí)現(xiàn)

    2048是一款數(shù)字益智游戲,初始數(shù)字則是由2+2組成的基數(shù)4。在操作方面的不同則表現(xiàn)為一步一格的移動(dòng),變成更為爽快的一次到底。相同數(shù)字的方?jīng)r在靠攏、相撞時(shí)會(huì)相加。本文將通過(guò)Unity3D實(shí)現(xiàn)這一游戲,需要的可以參考一下
    2022-03-03
  • C#獲取路徑的幾種方式實(shí)例分析

    C#獲取路徑的幾種方式實(shí)例分析

    這篇文章主要介紹了C#獲取路徑的幾種方式,實(shí)例分析了C#常用的路徑操作技巧,需要的朋友可以參考下
    2015-06-06
  • C#加解密之DES算法的實(shí)現(xiàn)

    C#加解密之DES算法的實(shí)現(xiàn)

    DES算法為密碼體制中的對(duì)稱密碼體制,又被稱為美國(guó)數(shù)據(jù)加密標(biāo)準(zhǔn)。本文將用C#語(yǔ)言實(shí)現(xiàn)DES算法,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-08-08
  • C#七大經(jīng)典排序算法系列(上)

    C#七大經(jīng)典排序算法系列(上)

    這篇文章主要為大家詳細(xì)介紹了C#七大經(jīng)典排序算法系列上篇,冒泡排序,快速排序等,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • C#繪圖基本方法實(shí)例總結(jié)

    C#繪圖基本方法實(shí)例總結(jié)

    C#要實(shí)現(xiàn)簡(jiǎn)單的畫(huà)圖功能可以利用Graphics這個(gè)類,下面這篇文章主要給大家介紹了關(guān)于C#繪圖基本方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • C#實(shí)現(xiàn)主窗體最小化后出現(xiàn)懸浮框及雙擊懸浮框恢復(fù)原窗體的方法

    C#實(shí)現(xiàn)主窗體最小化后出現(xiàn)懸浮框及雙擊懸浮框恢復(fù)原窗體的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)主窗體最小化后出現(xiàn)懸浮框及雙擊懸浮框恢復(fù)原窗體的方法,涉及C#窗體及鼠標(biāo)事件響應(yīng)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • c#將字節(jié)數(shù)組轉(zhuǎn)成易讀的字符串的實(shí)現(xiàn)

    c#將字節(jié)數(shù)組轉(zhuǎn)成易讀的字符串的實(shí)現(xiàn)

    這篇文章主要介紹了c#將字節(jié)數(shù)組轉(zhuǎn)成易讀的字符串的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • C#設(shè)置頁(yè)面單位和縮放的方法

    C#設(shè)置頁(yè)面單位和縮放的方法

    這篇文章主要介紹了C#設(shè)置頁(yè)面單位和縮放的方法,涉及C#設(shè)置頁(yè)面屬性的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C#?WPF后臺(tái)動(dòng)態(tài)添加控件實(shí)戰(zhàn)教程

    C#?WPF后臺(tái)動(dòng)態(tài)添加控件實(shí)戰(zhàn)教程

    最近嘗試用wpf在后臺(tái)動(dòng)態(tài)添加控件,所以下面這篇文章主要給大家介紹了關(guān)于C#?WPF后臺(tái)動(dòng)態(tài)添加控件的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05

最新評(píng)論