提供一段可直接嵌入 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 密碼 機制 (較複雜)。