欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#強制開啟Windows系統遠程桌面服務,取消僅允許運行使用網絡級別身份驗證(NLA)的遠程桌面的計算機連接限制

admin
2025年3月7日 12:14 本文熱度 1007

以下是實現強制開啟Windows 遠程桌面服務并禁用網絡級別身份驗證(NLA)的C#代碼示例:

using System;

using Microsoft.Win32;

using System.ServiceProcess;

using System.Diagnostics;

using System.Security.Principal;


class EnableRemoteDesktop

{

    static void Main(string[] args)

    {

        if (!IsAdministrator())

        {

            Console.WriteLine("請以管理員權限運行此程序。");

            return;

        }


        try

        {

            ConfigureTermService();

            EnableRdpThroughRegistry();

            DisableNlaThroughRegistry();

            RestartTermService();

            

            Console.WriteLine("遠程桌面已成功啟用,NLA限制已取消!");

        }

        catch (Exception ex)

        {

            Console.WriteLine($"操作失敗: {ex.Message}");

        }

    }


    static bool IsAdministrator()

    {

        var identity = WindowsIdentity.GetCurrent();

        var principal = new WindowsPrincipal(identity);

        return principal.IsInRole(WindowsBuiltInRole.Administrator);

    }


    static void ConfigureTermService()

    {

        try

        {

            // 設置服務為自動啟動

            ProcessStartInfo scConfig = new ProcessStartInfo

            {

                FileName = "sc",

                Arguments = "config TermService start= auto",

                UseShellExecute = false,

                CreateNoWindow = true

            };

            Process.Start(scConfig)?.WaitForExit();


            // 確保服務運行

            using (ServiceController service = new ServiceController("TermService"))

            {

                if (service.Status != ServiceControllerStatus.Running)

                {

                    service.Start();

                    service.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(30));

                }

            }

        }

        catch (Exception ex)

        {

            throw new Exception($"配置遠程桌面服務失敗: {ex.Message}");

        }

    }


    static void EnableRdpThroughRegistry()

    {

        try

        {

            using (RegistryKey key = Registry.LocalMachine.OpenSubKey(

                @"SYSTEM\CurrentControlSet\Control\Terminal Server", true))

            {

                key?.SetValue("fDenyTSConnections", 0, RegistryValueKind.DWord);

            }

        }

        catch (Exception ex)

        {

            throw new Exception($"修改注冊表啟用RDP失敗: {ex.Message}");

        }

    }


    static void DisableNlaThroughRegistry()

    {

        try

        {

            using (RegistryKey rdpKey = Registry.LocalMachine.OpenSubKey(

                @"SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp", true))

            {

                rdpKey?.SetValue("UserAuthentication", 0, RegistryValueKind.DWord);

            }

        }

        catch (Exception ex)

        {

            throw new Exception($"禁用NLA失敗: {ex.Message}");

        }

    }


    static void RestartTermService()

    {

        try

        {

            using (ServiceController service = new ServiceController("TermService"))

            {

                if (service.Status == ServiceControllerStatus.Running)

                {

                    service.Stop();

                    service.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(30));

                }

                service.Start();

                service.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(30));

            }

        }

        catch (Exception ex)

        {

            throw new Exception($"重啟服務失敗: {ex.Message}");

        }

    }

}

使用說明:

  1. 以管理員身份運行:

    • 在Visual Studio中創建項目時,需在app.manifest中添加管理員權限請求:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
  1. 關鍵操作說明:

    • fDenyTSConnections設為0啟用遠程桌面

    • UserAuthentication設為0禁用NLA

    • 服務配置: 將TermService服務設置為自動啟動并確保運行狀態

    • 注冊表修改:

    • 服務重啟: 確保注冊表修改生效

  2. 附加建議(可選):

// 添加防火墻規則(如果需要)

static void AddFirewallRule()

{

    try

    {

        ProcessStartInfo firewall = new ProcessStartInfo

        {

            FileName = "netsh",

            Arguments = "advfirewall firewall add rule name=\"Remote Desktop\" dir=in protocol=TCP localport=3389 action=allow",

            UseShellExecute = false,

            CreateNoWindow = true

        };

        Process.Start(firewall)?.WaitForExit();

    }

    catch (Exception ex)

    {

        Console.WriteLine($"防火墻規則添加失敗: {ex.Message}");

    }

}

注意事項:

  • 修改注冊表前建議備份

  • 禁用NLA會降低安全性,建議僅在可信網絡環境中使用

  • 部分服務器版本可能需要額外配置

  • 確保3389端口在防火墻中開放(代碼中已提供示例)

  • ?

相關文檔:

C#強制關閉Windows Server系統服務器遠程桌面服務方法[3]
  http://29680.oa22.cn


該文章在 2025/3/7 16:56:06 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved