Проверка пароля учетной записи в windows меня никогда не радовала да и в unix тоже. А что до загрузки систмы? системный загрузчик так почему бы нам его не модифицировать?
Опираясь на статью Криса Касперски MBR своими руками я немного модифицировал загрузчик windows XP добавив туда проверку пароля (проверяется каждый символ - нужно ввести все сразу правильно, а если ошибся начинай заново) и написал установщик.
СКАЧАТЬ
Программа установки загрузчика изначально предлагает создать аварийную загрузочную флешку (которая запускает систему в обход mbr на жестком диске), а затем выбрать номер физического диска куда следует установить загрузчик.
Часть кода программы, функция записи в первый сектор физического диска
#define sPD "\\\\.\\PhysicalDrive%d" int wr_disk(BYTE disks,unsigned char *data,size_t szdata) { unsigned char buf[1024],name[100],ndump[30]; HANDLE hFile; HFILE f; //------ DISK_GEOMETRY_EX dg; // структура геометрии диска DWORD junk; //------ sprintf((LPSTR)name,sPD,disks); hFile=CreateFile((LPCSTR)name,GENERIC_READ, FILE_SHARE_READ,NULL,OPEN_EXISTING,0,0); if(hFile!=INVALID_HANDLE_VALUE) { if(DeviceIoControl(hFile,IOCTL_DISK_GET_DRIVE_GEOMETRY_EX,NULL,0,&dg,sizeof(DISK_GEOMETRY_EX),&junk,NULL)) { if(szdata>dg.Geometry.BytesPerSector){CloseHandle(hFile); return -1;} SetFilePointer(hFile,0,0,FILE_BEGIN); ReadFile(hFile,&buf[0],dg.Geometry.BytesPerSector,&junk,NULL); CloseHandle(hFile); sprintf((LPSTR)ndump,"dump_mbr.%6d",rand()); f=_lcreat((LPCSTR)ndump, 0); _lwrite(f,(LPCCH)&buf[0],dg.Geometry.BytesPerSector); _lclose(f); memcpy(&buf[0],&data[0],szdata); hFile=CreateFile((LPCSTR)name,GENERIC_WRITE, FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,0); SetFilePointer(hFile,0,0,FILE_BEGIN); WriteFile(hFile,&buf[0],dg.Geometry.BytesPerSector,&junk,NULL); if(junk!=dg.Geometry.BytesPerSector){printf("Error write\n");}else{printf("%s write\tOK\n",name);} CloseHandle(hFile); } } }
Ради теста загрузчик можно записать на флешку и поставить в BIOS загрузку с USB (если ваша материнка это поддерживет). В принципе так можно и оставить. Я уверен ваши близкие будут в шоке и больше не подойдут к компьютеру пока вас нет дома :D
З.Ы: я не рекомендую ставить свой загрузчик как основной. Работает он и тестировал я его только под winXP (под win7 пишет boot error т.к там совершенно другая система загрузки)
В общем на свой страх и риск! После записи загрузчика оригинальный сохраняется в папке с программой как dump_mbr.*