Страница 23 из 24
54)---------------------------------------------------------------------------- Q> Как,зная имя и пароль пользователя и не имея привилегий для LogonUser(), программно проверить их на правильность? A> Наиболее просто это воспользоваться NetUserChangePassword() #include #include //#include #include #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");; } } 55)-------------------------------------------------------------------------- Q> Как динамически прятать/показывать кнопку на таскбаре? A> Последовательность действий : a) Создаем дополнительное невидимое ws_popup окно . m_hWnd=CreateWindowEx (NULL,TEXT("static"), TEXT(""), WS_POPUP, 0,0,1600,1200,NULL,(HMENU)NULL, NULL, NULL); b) Hужное нам окно делаем childом на этом окне . hMain=CreateWindowEx (NULL,TEXT("static"), TEXT("Main window"), WS_POPUP | WS_VISIBLE, 40,50,200,300,m_hWnd,(HMENU)NULL, NULL, NULL); c) Теперь спрятать кнопку - { ShowWindow(hMain,SW_HIDE); SetWindowLong(hMain,GWL_EXSTYLE,WS_EX_APPWINDOW); ShowWindow(hMain,SW_SHOW); } d) Показать - { ShowWindow(hMain,SW_HIDE); SetWindowLong(hMain,GWL_EXSTYLE,NULL); ShowWindow(hMain,SW_SHOW); } |