Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Барахлит функция NetGroupDelMembers() 
V
    Опции темы
Akeem
Дата 5.12.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 14.7.2006
Где: Киев/Украина

Репутация: нет
Всего: 3



Помогите найти ошибку в коде.

Код


NET_API_STATUS nStatus=0;
        LOCALGROUP_MEMBERS_INFO_0 lgroup_members;
        NET_API_STATUS myStatus=0;
        LPUSER_INFO_23 pBuf;
        DWORD dwgLevel = 0;
        DWORD dwuLevel = 23;
        DWORD dwTotalEntries = 0;
        DWORD i;
        LPWSTR pszServerName = NULL;
        WCHAR dwLocalGroupName[100];
        char* delUser;
        WCHAR wDelUser[100];

        delUser=(ComboBox1->Text).c_str();  //юзер которого надо удалить с группы
        MultiByteToWideChar(CP_ACP,0,delUser,-1,wDelUser,102);
        MultiByteToWideChar(CP_ACP,0,(ComboBox3->Text).c_str(),-1,dwLocalGroupName,101);
        
        myStatus = NetUserGetInfo(pszServerName,(const wchar_t*)wDelUser,dwuLevel,(LPBYTE*)pBuf);
        
        if(myStatus == NERR_Success)
        {
            ListBox1->Items->Add("Get User sid compleate!");
            
            lgroup_members.lgrmi0_sid = pBuf->usri23_user_sid;
            
            nStatus = NetLocalGroupDelMembers(pszServerName,
                (const wchar_t*)dwLocalGroupName,
                dwgLevel,
                (LPBYTE)&lgroup_members, //вот здесь возникает вопрос почему не срабатывает.
                dwTotalEntries);
            
            if(nStatus == NERR_Success)
            {
                ListBox1->Items->Add("User from group delete compleate!");
            }
            else
            {
                MessageBox(NULL,"A system error has occurred!\n","Error!", MB_OK);
            }
        }
        else
        {
            MessageBox(NULL,"A system error has occurred!\n","Error!", MB_OK);
        }

        if (pBuf != NULL)
        {
            NetApiBufferFree(pBuf);
        }
        }


Написал все как в мануале. но функция возвращает ошибку.

Возможна ли ошибка при получении User SID? 

Заранее спасибо за помощь!


--------------------
Мир огромен и мы только муравьи в нём! (С) formicha

PM MAIL WWW ICQ   Вверх
dumb
Дата 6.12.2006, 03:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



ошибка номер раз(такое глючит случайным образом, то есть зло злейшее):
Код

        delUser=(ComboBox1->Text).c_str();  //юзер которого надо удалить с группы
        MultiByteToWideChar(CP_ACP,0,delUser,-1,wDelUser,102);

Цитата(F1)
AnsiString::c_str() returns a non const temporary pointer to the internal string buffer in the AnsiString object. The pointer is invalid once the statement in which it is used has finished executing. That is,don't do something like this:
     char* cp = Edit1->Text.c_str();
     char* cp2 = strtok( cp, " \t\n" ); // cp may no longer be valid
If you need a persistent pointer, you MUST copy the string into its own buffer:
     char* cp = new char[ Edit1->Text.Length() + 1 ];
     strcpy( cp, Edit1->Text.c_str() );


попутно ошибка номер два:
Код

        WCHAR dwLocalGroupName[100];
        WCHAR wDelUser[100];
...
        MultiByteToWideChar(CP_ACP,0,delUser,-1,wDelUser,102);
        MultiByteToWideChar(CP_ACP,0,(ComboBox3->Text).c_str(),-1,dwLocalGroupName,101);

следует писать:
Код

        MultiByteToWideChar(CP_ACP,0,delUser,-1,wDelUser,sizeof(wDelUser)/sizeof(WCHAR));


ошибка номер три(в данном случае - фатальная):
Код

        myStatus = NetUserGetInfo(pszServerName,(const wchar_t*)wDelUser,dwuLevel,(LPBYTE*)pBuf);

последним параметром должен быть указатель на переменную-указатель user posted image smile
Код

        myStatus = NetUserGetInfo(pszServerName,(const wchar_t*)wDelUser,dwuLevel,(LPBYTE*)&pBuf);


ошибка номер четыре:
Код

        DWORD dwTotalEntries = 0;

Цитата(Akeem @  5.12.2006,  22:17 Найти цитируемый пост)
//вот здесь возникает вопрос почему не срабатывает.

потому что кол-во эл-тов нулю равно. smile

ps. может что-то еще и не увидел... user posted image
PM MAIL   Вверх
Akeem
Дата 6.12.2006, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 14.7.2006
Где: Киев/Украина

Репутация: нет
Всего: 3



dumb, 
Спасибо! Это действительно были ошибки. Теперь всё работает.

+1

Большо наверное ошибок не будет. 

П.С. правда ошибки остались в программе в целом)))




--------------------
Мир огромен и мы только муравьи в нём! (С) formicha

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.