在 Windows 9x 可用 SystemParametersInfo(SPI_SCREENSAVERRUNNING...) 屏蔽 Ctrl+Alt+Del,但在 NT/2000 因 WinLogon 註冊了安全注意序列 (SAS),普通 Hook 無法攔截。本文介紹替換 GINA (Graphical Identification and Authentication) DLL 的核心技術,實現 NT/2000 環境下完美屏蔽 Ctrl+Alt+Del。
MSGINA.DLL 提供登入介面。MSGINA.DLL。WlxLoggedOnSAS 函數,此時處於 Winlogon 桌面。WlxLoggedOnSAS 中直接切換回應用程式桌面 (SetThreadDesktop),系統不顯示安全對話框,達到屏蔽效果。int WINAPI WlxLoggedOnSAS(PVOID pWlxContext, DWORD dwSasType, PVOID pReserved) {
if (dwSasType == WLX_SAS_TYPE_CTRL_ALT_DEL) {
HANDLE hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, L"_ac952_z_cn_CTRL_ALT_DEL");
if (hMutex) {
CloseHandle(hMutex);
return WLX_SAS_ACTION_NONE; // 切換到應用程式桌面,屏蔽 SAS
}
}
return pOriginalWlxLoggedOnSAS(pWlxContext, dwSasType, pReserved); // 呼叫原 MSGINA 函數
}
主程式呼叫 CreateMutex(NULL, FALSE, "_ac952_z_cn_CTRL_ALT_DEL") 即可啟用屏蔽。
NoReboot.dll),需使用 Unicode 字元集。C:\WinNT\System32\(或 C:\Windows\System32\)。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinlogonGinaDLL,類型:REG_SZ,資料:NoReboot.dll救援方案:若無法進入系統,進入 DOS/安全模式,將 msgina.dll 複製覆蓋 NoReboot.dll,或刪除 GinaDLL 登錄值即可恢復。
⚠ 警告:修改 GINA 屬核心系統層級操作,錯誤會導致無法登入系統,請務必在測試環境驗證後再部署生產機,並備妥救援方案。
Windows 2000 系統檔案檢查器(SFC)完整使用手冊
關閉 Windows 預設共享 (C$, ADMIN$, IPC$) 最安全的批次檔做法
Windows 2000 禁 Ping 完整方案:IPsec、防火牆、TTL 偽裝
Windows 2000 磁碟重組完整指南:碎片類型、分析時機與安全重組原理
Windows 2000/XP 系統服務優化完整指南:啟用、手動、停用建議對照表
Windows 2000 Server IIS 下 FSO (FileSystemObject) 權限問題解決方案:IUSR 帳戶授權與組件安全替代方案