ComputerBooks.ru - Электронные книги, самоучители.

 
Электронные кники доступные для скачивания
На главную Добавить в избранное Форма отправки почты Если книг читать не будешь - скоро грамоту забудешь!

54. FAQ o Win API

Q> Как,зная имя и пароль пользователя и не имея привилегий для LogonUser(),
программно проверить их на правильность?

A> Наиболее просто это воспользоваться NetUserChangePassword()
(если пользователю разрешено менять пароль)
#include <windows.h> 
#include <lm.h>
#include <conio.h>

#pragma comment(lib,"netapi32")

//------------------------------------------------
void main(void)
{
char UserName[MAX_PATH];
char Password[MAX_PATH];
char CompName[MAX_PATH];

char tmp[MAX_PATH];
strcpy(tmp,"\\\\");
printf("Computer:");
scanf("%s",CompName);

if(CompName[0]!='\\')
{
strcat(tmp,CompName);
strcpy(CompName,tmp);
}

printf("User Name:");
scanf("%s",UserName );

printf("Password:");

        char ch;
        UINT u=0;

    do
    {

      ch = _getch();
if(ch=='\b')
{
_putch('\b');
u--;
}
else
{
 
          if(ch!='\r')_putch( '*' );
          Password[u]=ch;
          u++;
}
    } while( ch != '\r' );
          printf("\n");
      Password[--u]=0;u=0;

        wchar_t wcompname[MAX_PATH];
        wchar_t wusername[MAX_PATH];
        wchar_t wpassword[MAX_PATH];

    mbstowcs( wcompname, CompName, strlen(CompName)+1 );
    mbstowcs( wusername, UserName, strlen(UserName)+1 );
    mbstowcs( wpassword, Password, strlen(Password)+1 );

switch(NetUserChangePassword(wcompname,wusername,wpassword,wpassword))
{
case ERROR_ACCESS_DENIED:
        printf("The user does not have access to the requested information.\n");
        break;
case NERR_InvalidComputer:
        printf("The computer name is invalid.\n");
        break;
case NERR_NotPrimary:
        printf("The operation is allowed only on the primary domain controller of the domain.\n");
        break;
case NERR_UserNotFound:
        printf("The user name could not be found.\n");
        break;
case NERR_PasswordTooShort:
        printf("The password is shorter than required.\n");
        break;
case 0:
        printf("User Ok\n");
        break;

default:printf ("Error\n");;
}

} 

2000(c)

Электронные Книги по компьютерным программам
На правах рекламы:
-->

Для добавления страницы электронной книги в избранное нажмине Ctrl+D

Книги | Статьи | Скачать

Правовая информация   

  © ComputerBooks.ru,
  При копировании материалов со страницы обязательно разместите ссылку на источник.