C#實戰022:如何關閉Windows服務及程序-去除桌面水印
阿新 • • 發佈:2018-12-06
公司電腦加域之後總是有水印在桌面上,看什麼都不方便,特別是在程式設計的時候,程式碼很來就很多,又密密麻麻的,再上水印根本沒法發現錯誤在哪裡。
關閉程序馬上又會生成水印的,根本是沒法去除,為了去除水印,只能現在服務中找到相應的服務將其停掉
然後再將程序殺掉,這樣服務才不會再啟動,不過還存在一個問題就是每次重啟又會啟動服務,水印就又回來了......每次開機都要操作一遍特別繁瑣,所以寫個程式來自動執行。
首先我們先來獲取電腦的本地服務:
新增引用: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服務及程序-去除桌面水印