公司电脑加域之后总是有水印在桌面上,看什么都不方便,特别是在编程的时候,代码很来就很多,又密密麻麻的,再上水印根本没法发现错误在哪里。
关闭进程马上又会生成水印的,根本是没法去除,为了去除水印,只能现在服务中找到相应的服务将其停掉
然后再将进程杀掉,这样服务才不会再启动,不过还存在一个问题就是每次重启又会启动服务,水印就又回来了......每次开机都要操作一遍特别繁琐,所以写个程序来自动执行。
首先我们先来获取电脑的本地服务:
添加引用: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服务及进程-去除桌面水印
欢迎关注本人的公众号:编程手札,文章也会在公众号更新