Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ConvertSidToStringSid

1.9K
08 декабря 2005 года
ProgMaster
47 / / 29.08.2004
у меня возникает ошибка
Цитата:
The memory could not be "read"


Вот код:

Код:
// Receiving currently logged user
DWORD dwUserBuf = 256;
char chCurrentUser[256] = {0};
GetUserName(chCurrentUser, &dwUserBuf);
SID userSID;
DWORD dwSID;
TCHAR chSID[256];
LookupAccountName(NULL, chCurrentUser, &userSID, &dwSID, NULL, NULL, NULL);

// Loading ConvertSidToStringSid
typedef BOOL (WINAPI *tConvertSidToStringSid)(PSID,LPTSTR);
 
tConvertSidToStringSid pConvertSidToStringSid=0;

HINSTANCE handle = ::LoadLibrary("Advapi32.dll");
if (handle == NULL)  return;

pConvertSidToStringSid = (tConvertSidToStringSid) ::GetProcAddress(handle, "ConvertSidToStringSidA");
if (pConvertSidToStringSid)
{
  /// call the fucntion with your parameter
  pConvertSidToStringSid(&userSID, chSID);
}  
::FreeLibrary(handle);
MessageBox(NULL, chSID, "SID is:", MB_OK);

Мне кажится что я где-то с переменными что то не то сделал. Но где именно ?
1.9K
08 декабря 2005 года
mail0
137 / / 09.05.2005
А что говорит отладчик ?
 
Код:
char chCurrentUser[256] = {0};
GetUserName(chCurrentUser, &dwUserBuf);
SID userSID;
DWORD dwSID;
TCHAR chSID[256];

Странно.... почему chCurrentUser - char, а chSID - TCHAR ?
1.9K
09 декабря 2005 года
ProgMaster
47 / / 29.08.2004
Применил все что мне подсказывали. Но ошибка не исчезла :(. Повторяю: вылетает exception с сообщением:
Цитата:
the memory cound bot be "read"


Вылетает она на строке сразу же после messagebox''a (step 1), т.е. тут :

 
Код:
if(!LookupAccountName(NULL, chCurrentUser, &userSID, &dwSID, szRef, &cbRef, NULL))

не доходя до step 2.

Вот еще раз код обновленный:
Код:
// Получаем текущего пользователя
DWORD dwUserBuf = 256;
char chCurrentUser[256] = {0};

GetUserName(chCurrentUser, &dwUserBuf);

PSID userSID;
DWORD dwSID = 1024*512;
TCHAR *chSID;
char szRef[MAX_PATH]={0};
DWORD cbRef = sizeof(szRef);

MessageBox(NULL, "step 1", "step 1", MB_OK);

if(!LookupAccountName(NULL, chCurrentUser, &userSID, &dwSID, szRef, &cbRef, NULL))
{
    MessageBox(NULL, "cant lookupaccountname", "error", MB_OK);
}

// Загружаем функцию ConvertSidToStringSid
MessageBox(NULL, "step 2", "step 2", MB_OK);
typedef BOOL (WINAPI *tConvertSidToStringSid)(PSID,LPTSTR*);
 
tConvertSidToStringSid pConvertSidToStringSid=0;

HINSTANCE handle = ::LoadLibrary("Advapi32.dll");
if (handle == NULL)   return;

MessageBox(NULL, "step 3", "step 3", MB_OK);

pConvertSidToStringSid = (tConvertSidToStringSid) ::GetProcAddress(handle, "ConvertSidToStringSidA");
if (pConvertSidToStringSid)
{
    /// call the fucntion with your parameter
    pConvertSidToStringSid(&userSID, &chSID);
}  
::FreeLibrary(handle);

MessageBox(NULL, chSID, "SID", MB_OK);
LocalFree((HLOCAL)chSID);
1.9K
09 декабря 2005 года
mail0
137 / / 09.05.2005
Вот пример, из платформ SDK
1.9K
09 декабря 2005 года
ProgMaster
47 / / 29.08.2004
Цитата:
Originally posted by mail0
Вот пример, из платформ SDK



А это правильно что файла ntsecapi.h нету :) ?

1.9K
10 декабря 2005 года
mail0
137 / / 09.05.2005
Цитата:
Originally posted by ProgMaster
А это правильно что файла ntsecapi.h нету :) ?

А вот для этого надо поставить Platform SDK :) .

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог