日本xxxx18视频在线观看-日本xxxx1819-日本xxxwww在线观看-日本xxx-日本xx-日本www在线视频

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

【C#】設(shè)置Windows Server系統(tǒng)登錄賬戶鎖定閾值(如5次失敗后鎖定30分鐘),防止暴力破解

admin
2025年5月22日 7:24 本文熱度 102

在C#中,可以通過(guò)調(diào)用系統(tǒng)工具secedit.exe修改安全策略來(lái)實(shí)現(xiàn)賬戶鎖定策略的配置。以下是實(shí)現(xiàn)該功能的代碼示例:

using System;

using System.Diagnostics;

using System.IO;

using System.Linq;


class AccountLockoutPolicySetter

{

    const int TARGET_THRESHOLD = 5;

    const int TARGET_DURATION = 30;

    const int TARGET_RESET = 30;


    static void Main()

    {

        // 先檢查當(dāng)前策略

        if (CheckCurrentPolicy())

        {

            Console.WriteLine("當(dāng)前策略已符合要求,無(wú)需修改");

            return;

        }


        // 策略配置代碼(原邏輯)

        ApplyNewPolicy();

    }


    static bool CheckCurrentPolicy()

    {

        string exportPath = Path.Combine(Path.GetTempPath(), "current_policy.inf");

        

        try

        {

            // 導(dǎo)出當(dāng)前策略

            ProcessStartInfo exportInfo = new ProcessStartInfo

            {

                FileName = "secedit",

                Arguments = $"/export /cfg \"{exportPath}\"",

                WindowStyle = ProcessWindowStyle.Hidden,

                UseShellExecute = true,

                Verb = "runas" // 需要管理員權(quán)限

            };


            using (Process exportProc = Process.Start(exportInfo))

            {

                exportProc.WaitForExit();

                if (exportProc.ExitCode != 0) return false;

            }


            // 解析策略文件

            var lines = File.ReadAllLines(exportPath);

            bool inSystemAccess = false;

            int currentThreshold = 0;

            int currentDuration = 0;

            int currentReset = 0;


            foreach (string line in lines)

            {

                string cleanLine = line.Split(';')[0].Trim(); // 移除注釋

                if (cleanLine.StartsWith("[System Access]"))

                {

                    inSystemAccess = true;

                    continue;

                }

                else if (cleanLine.StartsWith("["))

                {

                    inSystemAccess = false;

                    continue;

                }


                if (inSystemAccess && cleanLine.Contains("="))

                {

                    string[] parts = cleanLine.Split('=');

                    string key = parts[0].Trim();

                    string value = parts[1].Trim();


                    switch (key)

                    {

                        case "LockoutBadCount":

                            int.TryParse(value, out currentThreshold);

                            break;

                        case "LockoutDuration":

                            int.TryParse(value, out currentDuration);

                            break;

                        case "ResetLockoutCount":

                            int.TryParse(value, out currentReset);

                            break;

                    }

                }

            }


            // 策略比對(duì)

            return currentThreshold == TARGET_THRESHOLD && 

                   currentDuration == TARGET_DURATION && 

                   currentReset == TARGET_RESET;

        }

        catch

        {

            return false;

        }

        finally

        {

            if (File.Exists(exportPath)) File.Delete(exportPath);

        }

    }


    static void ApplyNewPolicy()

    {

        string infContent = $@"

[Unicode]

Unicode=yes

[Version]

signature=""$CHICAGO$""

Revision=1

[System Access]

LockoutBadCount = {TARGET_THRESHOLD}

ResetLockoutCount = {TARGET_RESET}

LockoutDuration = {TARGET_DURATION}";


        string tempInfPath = Path.Combine(Path.GetTempPath(), "lockoutpolicy.inf");

        

        try

        {

            File.WriteAllText(tempInfPath, infContent);


            ProcessStartInfo startInfo = new ProcessStartInfo

            {

                FileName = "secedit",

                Arguments = $"/configure /db secedit.sdb /cfg \"{tempInfPath}\"",

                WindowStyle = ProcessWindowStyle.Hidden,

                Verb = "runas",

                UseShellExecute = true

            };


            using (Process proc = Process.Start(startInfo))

            {

                proc.WaitForExit();

                Console.WriteLine(proc.ExitCode == 0 

                    ? "策略已成功更新!" 

                    : $"更新失敗,錯(cuò)誤碼: {proc.ExitCode}");

            }

        }

        catch (Exception ex)

        {

            Console.WriteLine($"操作異常: {ex.Message}");

        }

        finally

        {

            if (File.Exists(tempInfPath)) File.Delete(tempInfPath);

        }

    }

}?

使用說(shuō)明:

  1. 管理員權(quán)限:代碼中通過(guò)Verb = "runas"請(qǐng)求提升權(quán)限,運(yùn)行時(shí)需以管理員身份執(zhí)行。

  2. 策略生效:策略修改后立即生效,無(wú)需重啟系統(tǒng)。

  3. 參數(shù)說(shuō)明

    • LockoutBadCount:賬戶鎖定閾值(失敗嘗試次數(shù))

    • LockoutDuration:鎖定持續(xù)時(shí)間(分鐘),設(shè)為-1表示永久鎖定

    • ResetLockoutCount:失敗計(jì)數(shù)器重置時(shí)間(分鐘)

注意事項(xiàng):

  • 實(shí)際部署前建議在測(cè)試環(huán)境驗(yàn)證

  • 確保目標(biāo)系統(tǒng)為Windows Server且支持這些策略

  • 鎖定策略會(huì)影響所有本地賬戶

  • 永久鎖定(LockoutDuration = -1)需手動(dòng)解鎖

可通過(guò)組策略編輯器(secpol.msc)驗(yàn)證策略是否生效,路徑為:安全設(shè)置 > 賬戶策略 > 賬戶鎖定策略。

代碼改進(jìn)說(shuō)明:

  1. 策略檢查函數(shù) CheckCurrentPolicy()

    • 通過(guò)secedit /export導(dǎo)出當(dāng)前策略

    • 解析策略文件的[System Access]部分

    • 比對(duì)三個(gè)關(guān)鍵值是否匹配目標(biāo)

  2. 雙階段執(zhí)行邏輯

    • 先檢查當(dāng)前策略狀態(tài)

    • 僅在策略不匹配時(shí)執(zhí)行修改操作

  3. 增強(qiáng)的錯(cuò)誤處理

    • 策略導(dǎo)出和解析過(guò)程增加異常捕獲

    • 自動(dòng)清理臨時(shí)文件

  4. 常量定義

    • 策略目標(biāo)值使用常量定義,便于維護(hù)

使用注意事項(xiàng):

  1. 必須使用管理員權(quán)限運(yùn)行程序

  2. 策略文件中的LockoutDuration = -1表示永久鎖定

  3. 導(dǎo)出的策略文件可能存在默認(rèn)值(如0),需結(jié)合實(shí)際情況判斷

  4. 建議通過(guò)secpol.msc手動(dòng)驗(yàn)證最終策略狀態(tài)

可以通過(guò)在命令提示符中運(yùn)行以下命令驗(yàn)證策略狀態(tài):

secedit /export /cfg current_policy.inf

type current_policy.inf | findstr "LockoutBadCount"


該文章在 2025/5/22 10:00:43 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产又爽又黄的激情精品视频 | 欧美精品视频一区 | 日本淫秽视频在线 | 成人免费视频软件网站 | 欧美亚洲中文字幕免费观看 | 蜜桃国产在线观看网址 | 日韩国产| 国产自约视频 | 欧美日韩在线视频播放 | 韩国一区二区三区日 | 国产精品线在线精品国语 | 日本在线xxxx | 成人91污污污在线观看 | 不卡国产视频第一页 | 国产精品不卡免费视频 | 日本中文字幕有码在线视频 | 97在线精品视频免费 | 日本特黄特黄 | 东京干影院 | 欧美亚洲国产高清在线 | 日本一本二本三区免费高清 | 日韩高清国产精品亚洲 | 国产乡下三级全黄三级 | 国语在线看免 | 91看片婬黄大片91桃色 | 欧美三级网址 | 菠萝视频高清 | 国产欧美日韩综合视频专区 | 欧美日韩免费观看 | 国产亚洲中文日韩欧美 | 日韩一区精品五区另类二区 | 国产普通话刺激视频在线播放 | 欧美福利专区 | 爱搞逼综合网 | 男女多p混| 日本高清一级婬片a级中文字幕 | 日韩欧美综 | 2025最新电影大全 | 日韩视频在线播放 | 国产最新乱子伦视频在线播放 | 国产精品日韩在线一区 |