Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

C++ 實作 Windows 自動登入功能:修改登錄檔實現免密碼開機

編輯:系統常見問題解答

提供一段可直接嵌入 C++ 專案的函式,透過修改 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon 登錄鍵值,實現指定使用者自動登入。

核心程式碼

BOOL SetWindowAutoLogin(LPCTSTR strUser, LPCTSTR strPass, LPCTSTR strAutoAdminLogon)
{
    HKEY hKey;
    LONG ntStatus = RegOpenKey(HKEY_LOCAL_MACHINE,
        _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"), &hKey);
    if (ERROR_SUCCESS != ntStatus) return FALSE;

    ntStatus = RegSetValueEx(hKey, _T("DefaultUserName"), 0, REG_SZ,
        (CONST BYTE*)strUser, _tcslen(strUser)*sizeof(TCHAR));
    if (ERROR_SUCCESS != ntStatus) { RegCloseKey(hKey); return FALSE; }

    ntStatus = RegSetValueEx(hKey, _T("DefaultPassword"), 0, REG_SZ,
        (CONST BYTE*)strPass, _tcslen(strPass)*sizeof(TCHAR));
    if (ERROR_SUCCESS != ntStatus) { RegCloseKey(hKey); return FALSE; }

    ntStatus = RegSetValueEx(hKey, _T("AutoAdminLogon"), 0, REG_SZ,
        (CONST BYTE*)strAutoAdminLogon, _tcslen(strAutoAdminLogon)*sizeof(TCHAR));
    if (ERROR_SUCCESS != ntStatus) { RegCloseKey(hKey); return FALSE; }

    RegCloseKey(hKey);
    return TRUE;
}

參數說明

  • strUser:欲自動登入的使用者帳號
  • strPass:該帳號密碼 (明文儲存,有安全性風險,請評估環境)
  • strAutoAdminLogon:"1" 啟用自動登入,"0" 停用

安全性提醒

啟用自動登入會以明文形式將密碼寫入登錄檔,任何具備登錄檔讀取權限的使用者/程式均可取得。生產環境建議改用 Windows 自動登入工具 (netplwiz) 或 群組原則 設定,或採用 LSA 密碼 機制 (較複雜)。

Copyright © Windows教程網 All Rights Reserved