最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

2、禁止QQ等程序運行

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

下面針對這三個基本功能進行實現(xiàn)

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

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

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

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

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

復制代碼 代碼如下:

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

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

復制代碼 代碼如下:

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

        protected override void OnStart(string[] args)
        {
            // TODO: 在此處添加代碼以啟動服務(wù)。
            AutoLog = false;
            FileLog.Success("服務(wù)已啟動");
            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("開始發(fā)送");
            oTimer_Get.Enabled = false;
            try
            {
                //此處可進行編寫詳細的業(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;
        }
    }

文件記錄類代碼

復制代碼 代碼如下:

/// <summary>
    /// 文件型日志記錄
    /// </summary>
    public static class FileLog
    {
        private static string sFilePath = System.Configuration.ConfigurationSettings.AppSettings["UserLog"];
        /// <summary>
        /// 錯誤日志
        /// </summary>
        /// <param name="Message">錯誤內(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ù)需要一個啟動入口,打開program.cs文件在main函數(shù)里邊編寫入口代碼如下:

復制代碼 代碼如下:

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

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

二、禁止QQ等程序運行

只需獲取本機所有運行的進行,通過Process.kill()方法結(jié)束該進程即可

復制代碼 代碼如下:

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)建自動安裝程序

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

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

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

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

Manual      服務(wù)安裝后,必須手動啟動。Automatic    每次計算機重新啟動時,服務(wù)都會自動啟動。Disabled     服務(wù)無法啟動。

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

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

注意   不要通過按 F5 鍵來運行項目——不能以這種方式運行服務(wù)項目。

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

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

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

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

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

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

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

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

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

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

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

至此整個實例基本完成

相關(guān)文章

  • C#中窗體重復創(chuàng)建問題的解決方法

    C#中窗體重復創(chuàng)建問題的解決方法

    在C#Windows窗體應用中,我們經(jīng)常遇到這樣的問題,當我們觸發(fā)一個窗口命令時,我連續(xù)點擊其中一個命令,會出現(xiàn)多個同樣的窗口,但我們是不管點擊多少次,都只出現(xiàn)一次,所以本文給大家介紹了C#中窗體重復創(chuàng)建問題的解決方法,需要的朋友可以參考下
    2024-04-04
  • 基于C#實現(xiàn)壓縮和解壓文件及文件夾

    基于C#實現(xiàn)壓縮和解壓文件及文件夾

    這篇文章主要為大家詳細介紹了基于C#實現(xiàn)壓縮和解壓文件及文件夾的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-03-03
  • C# CultureInfo類案例詳解

    C# CultureInfo類案例詳解

    這篇文章主要介紹了C# CultureInfo類案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C#實現(xiàn)Oracle批量寫入數(shù)據(jù)的方法詳解

    C#實現(xiàn)Oracle批量寫入數(shù)據(jù)的方法詳解

    往數(shù)據(jù)庫批量寫入數(shù)據(jù),這個功能使用頻率相對還是比較高的,特別是在做一些導入等功能的時候。本文為大家介紹了C#實現(xiàn)Oracle批量寫入數(shù)據(jù)的方法,需要的可以參考一下
    2022-11-11
  • C#實現(xiàn)數(shù)據(jù)包加密與解密實例詳解

    C#實現(xiàn)數(shù)據(jù)包加密與解密實例詳解

    這篇文章主要介紹了C#實現(xiàn)數(shù)據(jù)包加密與解密的方法,是一項很實用的技能,需要的朋友可以參考下
    2014-07-07
  • C# 定時器?;顧C制引起的內(nèi)存泄露問題解決

    C# 定時器?;顧C制引起的內(nèi)存泄露問題解決

    這篇文章主要介紹了C# 定時器保活機制引起的內(nèi)存泄露問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • C#實現(xiàn)簡易的計算器

    C#實現(xiàn)簡易的計算器

    這篇文章主要為大家詳細介紹了C#實現(xiàn)簡易的計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 基于WPF編寫一個串口轉(zhuǎn)UDP工具

    基于WPF編寫一個串口轉(zhuǎn)UDP工具

    串口是設(shè)備和上位機通信的常用接口,UDP則是網(wǎng)絡(luò)通信常用的通信協(xié)議,串口和UDP之間的相互轉(zhuǎn)換是非常有意義的。本文就利用WPF編寫一個串口轉(zhuǎn)UDP工具,需要的可以參考一下
    2023-04-04
  • 將數(shù)組中指定數(shù)量的元素移動數(shù)組后面的實現(xiàn)代碼

    將數(shù)組中指定數(shù)量的元素移動數(shù)組后面的實現(xiàn)代碼

    本篇文章是對將數(shù)組中指定數(shù)量的元素移動數(shù)組后面的實現(xiàn)代碼進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • Unity3D選擇本地圖片并加載

    Unity3D選擇本地圖片并加載

    這篇文章主要為大家詳細介紹了Unity3D選擇本地圖片并加載,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07

最新評論

太保市| 五原县| 鄂尔多斯市| 女性| 阿合奇县| 板桥市| 和林格尔县| 阿巴嘎旗| 南开区| 马山县| 太湖县| 云浮市| 厦门市| 台东县| 安庆市| 邹平县| 叶城县| 多伦县| 琼中| 武平县| 德清县| 桃源县| 丰原市| 南岸区| 黄骅市| 兴义市| 巩义市| 太康县| 关岭| 杂多县| 囊谦县| 横峰县| 潮安县| 西平县| 瓮安县| 四子王旗| 治多县| 甘南县| 池州市| 六盘水市| 当涂县|