1》常规配置的系统自动登录 单击“开始”/运行,输入“rundll32 netplwiz.dll,UsersRunDll”(注意大小写及空格),然后进入“用户账户”操作窗口,注意这与“控制面板”中打开的“用户账户”面板窗口不同! 把“要使用本机,用户必须输入用户名及密码”左边的钩去掉;接下来按“应用”按钮,随之弹出对话框,输入以后电脑每次自动登录的账户名及密码,按“确定”结束。
依次找到“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon”项,在右边的窗口中创建字符串值:“AutoAdminLogon”,并将其值设为“1“(值为1时启用自动登陆功能,为0时禁用自动登录功能);再创建字符串值:“DefaultUserName”,将其键值修改为登录时所用的用户名;最后创建字符串值:“DefaultPassword”,将其键值修改为登录时的密码(对应用户名);如果加入域,创建字符串值:“DefaultDomainName”,将其键值修改为域名。
2》加入域的电脑 由于电脑加入了域,并且是64位系统。加入域的话,每次自动登录系统一次,“AutoAdminLogon”键值就自动被设为0了,所以需要编写程序开机自动重设键值为1。由于默认vs2012是win32环境,这样没有权限操作注册表,所以必须在x64环境下编译程序。 2.1》在VS2012中创建X64环境 在新建X64位环境时,出现了“无法找到“XXX.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件”的错误,解决方案如下: 首先打开菜单,[项目]->[项目属性]
1.选择[配置属性]->[链接器]->[调试]->[生成调试信息],改为[是]
2.选择[配置属性]->[C/C++]->[常规]->[调试信息格式],改为[用于“编辑并继续”的程序数据库(/ZI)]
3.选择[配置属性]->[C/C++]->[优化]->[优化],改为[禁用(/Od)]
2.2》主要代码 - #include "stdafx.h"
- #include
- #include
- #include
- #include
- static int count=0;
- int autologon()
- {
- DWORD dwIndex=0,Type;
- HKEY hKey;
- //打开关闭注册表---------------------------------------------------------------
- LPCTSTR SubKey=TEXT("SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon");
- if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,SubKey,0,KEY_ALL_ACCESS,&hKey)!=
- ERROR_SUCCESS)
- {
- printf("RegOpenKeyEx error!/n");
- }
- TCHAR* pszValueName = _T("AutoAdminLogon");
- LPCTSTR pszValueData = _T("1");
- TCHAR dwData[1024];
- DWORD dwSize = 1024*sizeof(TCHAR);
- memset(dwData, 0, 1024*sizeof(TCHAR));
- LONG lReturn =0;
- lReturn=RegQueryValueEx(hKey, pszValueName, NULL, &Type, (BYTE *) &dwData, &dwSize);
- while(lReturn==ERROR_SUCCESS && strcmp(dwData,"0")==0){
- Sleep(count*1500);
- if(RegSetValueEx (hKey, pszValueName, 0L, REG_SZ,(CONST BYTE*) pszValueData, (_tcslen(pszValueData) + 1)*sizeof(TCHAR))==ERROR_SUCCESS)
- {
- printf("创建REG_SZ键值成功!");
- }
- else
- {
- printf("创建REG_SZ键值失败!");
- }
- lReturn=RegQueryValueEx(hKey, pszValueName, NULL, &Type, (BYTE *) &dwData, &dwSize);
- count++;
- }
- RegCloseKey(hKey);
- return 0;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- autologon();
- return 0;
- }
复制代码2.3》编译连接后,将exe文件置于[开始]->[所有程序]->[启动],右键[打开所有用户]文件夹内。
|