LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#强制关闭Windows Server系统服务器远程桌面服务方法

admin
2025年3月7日 16:54 本文热度 898

在C#中强制关闭Windows Server的远程桌面服务(Remote Desktop Services),可以通过操作服务控制管理器实现。以下是分步说明和代码示例:

步骤说明

  1. 获取远程桌面服务
    远程桌面服务的服务名为 TermService

  2. 停止服务
    使用 ServiceController 类停止服务,并设置超时等待。

  3. 管理员权限
    需以管理员身份运行程序,否则会触发权限异常。

  4. 异常处理
    处理服务不存在、权限不足或停止超时等情况。

代码示例

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();
        }
    }


    // 通过命令行强制停止服务(sc stop)
    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();
    }
}

注意事项

  1. 管理员权限

    在Visual Studio中调试时,需通过项目属性中的“应用程序清单文件”(app.manifest)启用管理员权限:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
  1. 服务依赖影响

    TermService 停止后,依赖它的服务(如远程桌面连接)将无法使用,请谨慎操作。

  2. 强制终止风险

    使用 sc stop 命令可能无法立即终止服务,若需强制结束进程,需谨慎处理共享进程(如 svchost.exe)。

运行说明

  • 编译代码前,确保在项目中配置管理员权限。

  • 程序会先尝试正常停止服务,若超时则调用命令行工具强制停止。

通过此方法,可以安全地关闭远程桌面服务,避免影响服务器其他关键功能。


相关文档:

C#强制开启Windows系统远程桌面服务,取消仅允许运行使用网络级别身份验证(NLA)的远程桌面的计算机连接限制[93]
  http://29677.oa22.cn


该文章在 2025/3/7 16:55:03 编辑过
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved