Здравствуйте, server_mouse, Вы писали:
_>Здравствуйте, Тарик, Вы писали:
Т>>Пробовал.... Или пустая строка или випадает в систему с ошибкой....
Т>>Может я не правлиьно работал с PWSTR типом...
Т>>Подскажите как его перевести в какойнибудь стандартний...
_>Вот пример:
_>_>int WINAPI WlxLoggedOutSAS(PVOID pWlxContext,DWORD dwSasType,PLUID pAuthenticationId,PSID pLogonSid,PDWORD pdwOptions,PHANDLE phToken,PWLX_MPR_NOTIFY_INFO pMprNotifyInfo,PVOID *pProfile)
_>{
_> char *sLogin=NULL;
_>//Вызываем оригинальную гину
_> int nRet=Wlxtbl.WlxLoggedOutSAS(pWlxContext,dwSasType,pAuthenticationId,pLogonSid,pdwOptions,phToken,pMprNotifyInfo,pProfile);
_> if(WLX_SAS_ACTION_LOGON==nRet)
_> {
_> //Если логон успешный - тырим логин...
_> char *sLogin=new char[wcslen(pNprNotifyInfo->pszUserName)+1];
_> sprintf(sLogin,"%ws",pNprNotifyInfo->pszUserName);
_> }
_>//Ну во и всё. Если всё намана, логин лежит в sLogin...
_>//..... делаем свои чудеса
_> return nRet;
_>}
_>
Большое спасибо.....
Помогло....
Но еще вопрос...
Изменяем пример так:
int WINAPI WlxLoggedOutSAS(PVOID pWlxContext,DWORD dwSasType,PLUID pAuthenticationId,PSID pLogonSid,PDWORD pdwOptions,PHANDLE phToken,PWLX_MPR_NOTIFY_INFO pMprNotifyInfo,PVOID *pProfile)
{
char *sLogin=NULL;
//Вызываем оригинальную гину
int nRet=Wlxtbl.WlxLoggedOutSAS(pWlxContext,dwSasType,pAuthenticationId,pLogonSid,pdwOptions,phToken,pMprNotifyInfo,pProfile);
if(WLX_SAS_ACTION_LOGON==nRet)
{
//Если логон успешный — тырим логин...
char *sLogin=new char[wcslen(pNprNotifyInfo->pszUserName)+1];
sprintf(sLogin,"%ws",pNprNotifyInfo->pszUserName);
MessageBox(NULL,TEXT(sLogin),TEXT(sLogin),MB_OK);
}
MessageBox(NULL,TEXT(sLogin),TEXT(sLogin),MB_OK);
//Ну во и всё. Если всё намана, логин лежит в sLogin...
//..... делаем свои чудеса
return nRet;
}
В итоге первый месаге бокс показывает логин
а второй говорит ерор... и не показывет логин....
Если убрать первый то второй тоже не показывает логин а только пустую срочку с названием
окна "Error".
Что это значит...????