1. 程式人生 > >C#實戰022:如何關閉Windows服務及程序-去除桌面水印

C#實戰022:如何關閉Windows服務及程序-去除桌面水印

      公司電腦加域之後總是有水印在桌面上,看什麼都不方便,特別是在程式設計的時候,程式碼很來就很多,又密密麻麻的,再上水印根本沒法發現錯誤在哪裡。

關閉程序馬上又會生成水印的,根本是沒法去除,為了去除水印,只能現在服務中找到相應的服務將其停掉

 

然後再將程序殺掉,這樣服務才不會再啟動,不過還存在一個問題就是每次重啟又會啟動服務,水印就又回來了......每次開機都要操作一遍特別繁瑣,所以寫個程式來自動執行。

 

首先我們先來獲取電腦的本地服務:

新增引用:System.ServiceProcess 
然後匯入名稱空間:using System.ServiceProcess;

ServiceController[] serviceControllers = ServiceController.GetServices();//獲得服務陣列
string serviceName = "Sprite";
foreach (var service in serviceControllers)  //遍歷陣列獲取所有的服務
{
    Console.WriteLine("ServiceName:{0}\t\tServiceStatus:{1}", service.ServiceName, service.Status);
}

 這樣就能獲取到所有的本地服務了,接著我們找到指定的服務並將其關閉:

//獲取指定服務,若服務狀態不是Runing就Start該服務
var server = serviceControllers.FirstOrDefault(service => service.ServiceName == serviceName);
//if (server != null && server.Status != ServiceControllerStatus.Running)
//{
//    server.Start();
//}
if (server != null && server.Status != ServiceControllerStatus.Stopped)
{
    server.Stop();
}

關閉了服務我們接著關閉程序,同樣下來獲取所有的線上程序:

匯入名稱空間:using System.Diagnostics;

Process[] Processs = Process.GetProcesses();//獲得程序陣列
foreach (Process p in Processs)
{
    string info = p.Id + "  " + p.ProcessName + "  " + p.MainWindowTitle + "  " + p.StartTime;
    Console.WriteLine(info);
}

接著我們遍歷所有的程序,在程序中找到我們需要停止的程序然後將其關閉:

//遍歷所有的程序
for (int i = 0; i < Processs.Length; i++)
{
    //判斷此程序是否是要查詢的程序
    if (Processs[i].ProcessName.ToString().ToLower() == "sprite")
    {
        Processs[i].Kill();//結束程序
    }
}

 完整程式碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.ServiceProcess;
using System.Diagnostics;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            getService();
            //ThreadPool.RegisterWaitForSingleObject(new AutoResetEvent(true), new WaitOrTimerCallback(getService),30000);
        }
        public static void getService()
        {
            ServiceController[] serviceControllers = ServiceController.GetServices();//獲得服務陣列
            string serviceName = "Sprite";
            foreach (var service in serviceControllers)  //遍歷陣列獲取所有的服務
            {
                Console.WriteLine("ServiceName:{0}\t\tServiceStatus:{1}", service.ServiceName, service.Status);
            }
            //獲取指定服務,若服務狀態不是Runing就Start該服務
            var server = serviceControllers.FirstOrDefault(service => service.ServiceName == serviceName);
            //if (server != null && server.Status != ServiceControllerStatus.Running)
            //{
            //    server.Start();
            //}
            if (server != null && server.Status != ServiceControllerStatus.Stopped)
            {
                server.Stop();
            }



            Process[] Processs = Process.GetProcesses();//獲得程序陣列
            foreach (Process p in Processs)
            {
                string info = p.Id + "  " + p.ProcessName + "  " + p.MainWindowTitle + "  " + p.StartTime;
                Console.WriteLine(info);
            }
            //遍歷所有的程序
            for (int i = 0; i < Processs.Length; i++)
            {
                //判斷此程序是否是要查詢的程序
                if (Processs[i].ProcessName.ToString().ToLower() == "sprite")
                {
                    Processs[i].Kill();//結束程序
                }
            }
            Console.ReadLine();
        }
    }
}

首發百度經驗:C#如何關閉Windows服務及程序-去除桌面水印