標題: 練習作品 -> Windows 自動登錄小工具 V1.0 [打印本頁]
作者: liuyuxi 時間: 2015-1-11 00:32
標題: 練習作品 -> Windows 自動登錄小工具 V1.0
在網上下載了一個Windows 自動登錄器,覺得挺好玩的。發現它是修改注冊表實現自動登錄。自己也就試試寫一個玩玩。
程序界面:
實現原理,修改注冊表鍵值
=========================================================================================================
在運行中輸入:regedit 打開注冊表編輯器:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon主鍵
要求:指定的自動登陸帳號至少是user級別用戶;
前三項鍵值是必須要有的:
----autoadminlogon,鍵值為1,用于設置是否可以自動登陸;鍵值為0,則反之
----defaultusername:鍵值為自動登陸默認的用戶名;
----defaultpassword: 鍵值為自動登陸用戶的密碼;
----defaultdomainname:鍵值為自動登陸的計算機名稱或者登陸網絡的域名;
----ForceAutoLogon的字符串值,并將這個值設為1,這樣系統即便是在注銷之后也會自動登錄到指定的賬戶;
----在默認情況下,在啟動時可以按住Shift鍵來阻止自動登錄,要消除Shift鍵對自動登錄的影響,可以添加一個名為IgnoreShiftOverride的字符串值,并將該值設為1;
----添加AutoLogonCount的DWORD值,可以設置希望自動登錄的次數
=========================================================================================================
初始化代碼 在 OnInitDialog() 末尾(return TRUE; 前)加入:
// 獲取當前用戶名
char User[MAX_PATH];
DWORD Size = MAX_PATH;
if (GetUserName(User,&Size)) // 獲取用戶名
SetDlgItemText(IDC_Name , User); // 顯示在編輯框中
else
SetDlgItemText(IDC_Name , "自動獲取用戶名失敗,請輸入用戶名");
HKEY RegKey;
char temp[MAX_PATH]; // 獲取鍵值存放緩沖區
DWORD dwtype; // 鍵值類型
DWORD sl = MAX_PATH; // 緩沖區大小
if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon",0, KEY_ALL_ACCESS, &RegKey))
{
RegQueryValueEx(RegKey,"AutoAdminLogon",NULL,&dwtype,(LPBYTE)temp,&sl);
if (strcmp("1",(char *)temp) == 0) // 判斷 AutoAdminLogon 是否為 1
SetDlgItemText(IDC_ZT,"溫馨提示:檢測到系統已經是自動登錄狀態!");
else
SetDlgItemText(IDC_ZT,"系統尚未設置自動登錄!");
}=========================================================================================================
修改注冊表函數:
// 參數:設置、取消,注銷生效,屏蔽Shift鍵,用戶名,密碼:返回 1 為失敗 0 為成功
int Reg(int i, int zhux, int Shift, char User[], char Password[])
{
HKEY RegKey;
char AutoUser[] = "DefaultUserName"; // 用戶名
char AutoPass[] = "Defaultpassword"; // 密碼
char Auto[] = "AutoAdminLogon"; // 1 自動登錄
char Autozhux[] = "ForceAutoLogon"; // 注銷時有效
char AutoShift[] = "IgnoreShiftOverride"; // 消除Shift鍵對自動登錄的影響
if (ERROR_SUCCESS != RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon",0, KEY_ALL_ACCESS, &RegKey))
return 1;
if (i) // 設置
{
char T='1';
RegSetValueEx(RegKey, AutoUser, 0, REG_SZ, (LPBYTE)User, strlen(User)); // 設置用戶名
RegSetValueEx(RegKey, AutoPass, 0, REG_SZ, (LPBYTE)Password, strlen(Password)); // 設置密碼
if (!zhux) // 如果沒有勾選 注銷無效復選框 則設置注銷有效
RegSetValueEx(RegKey, Autozhux, 0, REG_SZ, (const BYTE *)&T, 1);
else
RegDeleteValue(RegKey, Autozhux);
if (!Shift) // 如果沒有勾選 不屏蔽Shift 鍵 則設置屏蔽Shift鍵
RegSetValueEx(RegKey, AutoShift, 0, REG_SZ, (const BYTE *)&T, 1);
else
RegDeleteValue(RegKey, AutoShift);
if (RegSetValueEx(RegKey, Auto, 0, REG_SZ, (const BYTE *)&T, 1)) // 只判斷關鍵的注冊表值就行啦
return 1;
}
else // 取消
{
RegDeleteValue(RegKey, AutoUser); // 刪除用戶名鍵值
RegDeleteValue(RegKey, AutoPass); // 刪除密碼鍵值
RegDeleteValue(RegKey, Autozhux); // 刪除注銷有效鍵值
RegDeleteValue(RegKey, AutoShift); // 刪除屏蔽Shift 鍵值
if (RegDeleteValue(RegKey, Auto)) // 刪除自動登錄
return 1;
}
RegCloseKey(RegKey);
return 0;
}=========================================================================================================
【自動登錄】按鍵觸發代碼:
void CWindowsDlg::OnAutoAdd()
{
// TODO: Add your control notification handler code here
char User[MAX_PATH]; // 存儲 用戶名 編輯框中數據的緩沖區
char Password[MAX_PATH]; // 存儲 密碼 編輯框中數據的緩沖區
GetDlgItemText(IDC_Name, User, MAX_PATH); // 獲取 用戶名 編輯框中的緩沖區
GetDlgItemText(IDC_Password, Password, MAX_PATH); // 獲取 密碼 編輯框中的緩沖區
CButton *pButton; // 定義對象
pButton = (CButton *)GetDlgItem(IDC_ZX); //獲得指定IDcheckbox對象引用,并轉換為CButton對象
int zhux = pButton->GetCheck();//獲得checkbox的點擊狀態,值只有0 1 2三種狀態,點擊后為非0值
pButton = (CButton *)GetDlgItem(IDC_Shift);
int Shift = pButton->GetCheck();
char temp[50] = "設置 Windows 自動登錄"; // 狀態顯示
if (!Reg(1,zhux,Shift,User,Password))
{
strcat(temp,"成功!");
if (!zhux) // 如果沒有勾選 注銷無效
strcat(temp," 注銷時有效!");
if (!Shift) // 如果沒有勾選 不屏蔽Shift 鍵
strcat(temp," 屏蔽Shift 鍵的影響!");
SetDlgItemText(IDC_ZT, temp); // 顯示狀態
MessageBox("設置 Windows 自動登錄成功! ", "OK", MB_ICONASTERISK | MB_SYSTEMMODAL);
}
else
{
SetDlgItemText(IDC_ZT, "設置 Windows 自動登錄失敗!");
MessageBox("設置 Windows 自動登錄失敗!可能是由于安全軟件的攔截或權限原因! ", "ERROR", MB_ICONWARNING | MB_SYSTEMMODAL);
}
}
=========================================================================================================
【取消自動】按鍵觸發代碼:
void CWindowsDlg::OnAutoDel()
{
// TODO: Add your control notification handler code here
if (!Reg(0,NULL,NULL,NULL,NULL))
{
SetDlgItemText(IDC_ZT, "取消 Windows 自動登錄成功!");
MessageBox("取消 Windows 自動登錄成功! ", "OK", MB_ICONASTERISK | MB_SYSTEMMODAL);
}
else
{
SetDlgItemText(IDC_ZT, "取消 Windows 自動登錄失敗!");
MessageBox("取消 Windows 自動登錄失敗! 可能由于安全軟件的攔截 或 早就取消 Windows自動登錄! ", "ERROR",MB_ICONWARNING | MB_SYSTEMMODAL);
}
}
作者: liuyuxi 時間: 2015-1-11 00:33
2.0改進: 在 V1.0 的版本上增加一個登錄的 計算機名稱或域名 的功能 也是通過修改注冊表實現的 應網友要求,并未加入自校驗...
程序界面:
給出一份關鍵代碼:
// 參數:設置、取消,注銷生效,屏蔽Shift鍵,用戶名,密碼:返回 1 為失敗 0 為成功
int Reg(int i, int zhux, int Shift, char User[], char Password[],char PCname[])
{
HKEY RegKey;
char AutoUser[] = "DefaultUserName"; // 用戶名
char AutoPass[] = "Defaultpassword"; // 密碼
char Auto[] = "AutoAdminLogon"; // 1 自動登錄
char Autozhux[] = "ForceAutoLogon"; // 注銷時有效
char AutoShift[] = "IgnoreShiftOverride"; // 消除Shift鍵對自動登錄的影響
char PCName[] = "defaultdomainname"; // 計算機名稱或域名
if (ERROR_SUCCESS != RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon",0, KEY_ALL_ACCESS, &RegKey))
return 1;
if (i) // 設置
{
char T='1';
RegSetValueEx(RegKey, AutoUser, 0, REG_SZ, (LPBYTE)User, strlen(User)); // 設置用戶名
RegSetValueEx(RegKey, AutoPass, 0, REG_SZ, (LPBYTE)Password, strlen(Password)); // 設置密碼
if (strcmp(PCname,"無法獲得計算機名")!=0)
{
RegSetValueEx(RegKey, PCName, 0, REG_SZ, (LPBYTE)PCname, strlen(PCname)); // 設置計算機名或域名
}
if (!zhux) // 如果沒有勾選 注銷無效復選框 則設置注銷有效
RegSetValueEx(RegKey, Autozhux, 0, REG_SZ, (const BYTE *)&T, 1);
else
RegDeleteValue(RegKey, Autozhux);
if (!Shift) // 如果沒有勾選 不屏蔽Shift 鍵 則設置屏蔽Shift鍵
RegSetValueEx(RegKey, AutoShift, 0, REG_SZ, (const BYTE *)&T, 1);
else
RegDeleteValue(RegKey, AutoShift);
if (RegSetValueEx(RegKey, Auto, 0, REG_SZ, (const BYTE *)&T, 1)) // 只判斷關鍵的注冊表值就行啦
return 1;
}
else // 取消
{
RegDeleteValue(RegKey, AutoUser); // 刪除用戶名鍵值
RegDeleteValue(RegKey, AutoPass); // 刪除密碼鍵值
RegDeleteValue(RegKey, Autozhux); // 刪除注銷有效鍵值
RegDeleteValue(RegKey, AutoShift); // 刪除屏蔽Shift 鍵值
RegDeleteValue(RegKey, PCName); // 刪除計算機名或域名
if (RegDeleteValue(RegKey, Auto)) // 刪除自動登錄
return 1;
}
RegCloseKey(RegKey);
return 0;
}
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
四虎在线播放
|
国产高清精品在线
|
国产日韩一区二区
|
91久久久久久久
|
www.国产|
搞av.com
|
亚洲福利
|
亚洲精品一区二区
|
亚州av|
中文字幕av亚洲精品一部二部
|
国产中文区二幕区2012
|
欧美精品在欧美一区二区
|
国产一区二区精品在线观看
|
久久蜜桃av一区二区天堂
|
欧洲高清转码区一二区
|
亚洲成人www
|
国产一级毛片视频
|
全免一级毛片
|
成人免费视频网站在线看
|
伊人网一区
|
日韩视频精品在线
|
国产午夜精品一区二区三区在线观看
|
1000部精品久久久久久久久
|
黄色在线观看
|
日韩精品一二三
|
欧美日韩国产精品一区
|
欧美亚洲国产精品
|
视频在线日韩
|
久在线
|
欧美日韩中文在线
|
欧美日韩国产在线观看
|
国产高清av免费观看
|
中文字幕一区二区三
|
天天爱综合
|
国产精品色婷婷久久58
|
久久精品网
|
91在线看|
日本三级网站在线观看
|
成人免费共享视频
|
日韩av一区二区在线观看
|
午夜精品久久久久久久星辰影院
|