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服务及进程-去除桌面水印

猜你喜欢

转载自blog.csdn.net/kevinfan2011/article/details/84561987
今日推荐