C#强制关闭Windows Server系统服务器远程桌面服务方法
|
admin
2025年3月7日 16:54
本文热度 898
|
在C#中强制关闭Windows Server的远程桌面服务(Remote Desktop Services),可以通过操作服务控制管理器实现。以下是分步说明和代码示例:
步骤说明
获取远程桌面服务
远程桌面服务的服务名为 TermService
。
停止服务
使用 ServiceController
类停止服务,并设置超时等待。
管理员权限
需以管理员身份运行程序,否则会触发权限异常。
异常处理
处理服务不存在、权限不足或停止超时等情况。
代码示例
using System;
using System.ServiceProcess;
using System.Diagnostics;
using System.Security.Principal;
public class RemoteDesktopServiceController
{
public static void StopRemoteDesktopService()
{
if (!IsAdministrator())
{
Console.WriteLine("请以管理员身份运行此程序。");
return;
}
try
{
using (ServiceController service = new ServiceController("TermService"))
{
Console.WriteLine($"当前服务状态: {service.Status}");
if (service.Status == ServiceControllerStatus.Running)
{
Console.WriteLine("正在停止远程桌面服务...");
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(30));
Console.WriteLine("服务已成功停止。");
}
else
{
Console.WriteLine("远程桌面服务未运行。");
}
}
}
catch (InvalidOperationException ex)
{
Console.WriteLine($"操作失败:{ex.Message}");
}
catch (System.ServiceProcess.TimeoutException)
{
Console.WriteLine("停止服务超时,尝试强制终止...");
ForceStopServiceViaCMD();
}
}
private static void ForceStopServiceViaCMD()
{
try
{
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = "sc",
Arguments = "stop TermService",
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = true,
Verb = "runas"
};
Process.Start(psi)?.WaitForExit();
Console.WriteLine("已发送强制停止命令。");
}
catch (Exception ex)
{
Console.WriteLine($"强制停止失败:{ex.Message}");
}
}
private static bool IsAdministrator()
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
public static void Main()
{
StopRemoteDesktopService();
Console.ReadKey();
}
}
注意事项
管理员权限
在Visual Studio中调试时,需通过项目属性中的“应用程序清单文件”(app.manifest)启用管理员权限:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
服务依赖影响
TermService
停止后,依赖它的服务(如远程桌面连接)将无法使用,请谨慎操作。
强制终止风险
使用 sc stop
命令可能无法立即终止服务,若需强制结束进程,需谨慎处理共享进程(如 svchost.exe
)。
运行说明
通过此方法,可以安全地关闭远程桌面服务,避免影响服务器其他关键功能。
相关文档:
C#强制开启Windows系统远程桌面服务,取消仅允许运行使用网络级别身份验证(NLA)的远程桌面的计算机连接限制[
93]
http://29677.oa22.cn
该文章在 2025/3/7 16:55:03 编辑过