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

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

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

在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