[研究]C#,顯示「帳戶原則」(「密碼原則」、「帳戶鎖定原則」)結果
2024-03-19
環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19
密碼原則
- 使用可還原的加密來存放密碼
- 密碼必須符合複雜性需求
- 密碼最短使用期限
- 密碼最長使用期限
- 強制執行密碼歷程記錄
- 最小密碼長度
已啟用 ? 已停用? 尚未定義 ?
********************************************************************************
WinForm 程式
using System;
using System.Windows.Forms;
namespace ServerHealthCheckWindowsFormsApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
richTextBox1.AppendText("rsop.msc\n");
richTextBox1.AppendText("電腦設定\\Windows設定\\安全性設定\\帳戶原則\\密碼原則\n\n");
#region === 使用可還原的加密來存放密碼 ===
string registryPath = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System";
object clearTextPasswordValue = Microsoft.Win32.Registry.GetValue(registryPath, "ClearTextPassword", null);
if (clearTextPasswordValue != null)
{
int value = Convert.ToInt32(clearTextPasswordValue);
if (value == 1)
{
richTextBox1.AppendText("使用可還原的加密來存放密碼:已啟用\n");
}
else
{
richTextBox1.AppendText("使用可還原的加密來存放密碼:已停用\n");
}
//精簡寫法
//richTextBox1.AppendText("使用可還原的加密來存放密碼:" + ((Boolean)clearTextPasswordValue ? "已啟用" : "已停用") + "\n");
}
else
{
richTextBox1.AppendText("使用可還原的加密來存放密碼:尚未定義\n");
}
|
********************************************************************************
【電腦設定\Windows設定\安全性設定\帳戶原則\帳戶鎖定原則】
重設帳戶鎖定計數器的時間間隔
帳戶鎖定期間
帳戶鎖定閾值
已啟用 ? 已停用? 尚未設定 ? 值 ? 繁體中文
using Microsoft.Win32;
using System;
using System.Windows.Forms;
namespace AccountLockoutPolicyExample
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void MainForm_Load(object sender, EventArgs e)
{
try
{
// 本機的登錄路徑
string registryPath = @"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon";
// 讀取 "ResetLockoutCount" 註冊表鍵的值
object resetLockoutCountValue = Registry.GetValue($"HKEY_LOCAL_MACHINE\\{registryPath}", "ResetLockoutCount", null);
// 檢查策略的狀態
string resetLockoutCountStatus = GetPolicyStatus(resetLockoutCountValue);
// 讀取 "LockoutDuration" 註冊表鍵的值
object lockoutDurationValue = Registry.GetValue($"HKEY_LOCAL_MACHINE\\{registryPath}", "LockoutDuration", null);
string lockoutDurationStatus = GetPolicyStatus(lockoutDurationValue);
// 讀取 "LockoutThreshold" 註冊表鍵的值
object lockoutThresholdValue = Registry.GetValue($"HKEY_LOCAL_MACHINE\\{registryPath}", "LockoutThreshold", null);
string lockoutThresholdStatus = GetPolicyStatus(lockoutThresholdValue);
// 顯示結果
richTextBox.Text = $"重設帳戶鎖定計數器的時間間隔:{resetLockoutCountStatus}\n" +
$"帳戶鎖定期間:{lockoutDurationStatus}\n" +
$"帳戶鎖定閾值:{lockoutThresholdStatus}";
}
catch (Exception ex)
{
richTextBox.Text = $"發生例外狀況:{ex.Message}";
}
}
private string GetPolicyStatus(object policyValue)
{
if (policyValue != null)
{
return $"已啟用 (值:{policyValue})";
}
else
{
return "尚未設定";
}
}
}
}
|
(完)
相關


沒有留言:
張貼留言