Здравствуйте Michael Yashin, Вы писали:
MY>Есть логин, пароль, имя домена. Нужно проверить существование этого юзера в домене.
MY>Для LogonUser() не хватает привелегий. Это будет dll, посему в ручную с правами разбираться — это не есть гут. Хз, что там за окружение будет...
MY>NetValidateName() — Вижа просто не находит функцию. По MSDN нужно подключать lm.h, но там такой функции просто нет!!!
Тебе поможет Platform SDK — там точно есть
И вобще не понимаю — уже столько писали — что не только SP на VC надо ставить но и последнюю SDK иметь — там всегда исправления новее.
MY>Что делать?
MY>MSVC 6.0, Win2000 pro
Здравствуйте Michael Yashin, Вы писали:
MY>Есть логин, пароль, имя домена. Нужно проверить существование этого юзера в домене.
MY>Для LogonUser() не хватает привелегий. Это будет dll, посему в ручную с правами разбираться — это не есть гут. Хз, что там за окружение будет...
MY>NetValidateName() — Вижа просто не находит функцию. По MSDN нужно подключать lm.h, но там такой функции просто нет!!!
MY>Что делать?
MY>MSVC 6.0, Win2000 pro
Есть вопросец.
Если надо проверить существование юзера — то можно использовать LookupAccountName.
Но при чем здесь пароль? его тоже проверять надо на валидность?
Здравствуйте vasketsov, Вы писали:
V>Здравствуйте Алекс, Вы писали:
А>>Здравствуйте Michael Yashin, Вы писали:
А>>хъ
MY>>>Что делать?
А>>Я бы посоветовал использовать NetUserChangePassword().
V>Если есть право менять пароль...
Привилегию Bypass traverse checking, по умолчанию, имеют все.
Re[4]: Как проверить существование юзера в домене???
Здравствуйте Алекс, Вы писали:
А>>>Я бы посоветовал использовать NetUserChangePassword().
V>>Если есть право менять пароль...
А>Привилегию Bypass traverse checking, по умолчанию, имеют все.
1) AFAIK эта привилегия разрешает прямой доступ к вложенной папке, если по пути есть папки, в которые нет доступа, или это только частное толкование и тут она тоже рабоотает? И по дефолту — это одно, а на самом деле может быть все что угодно (как вариант, разумеется, пойдет).
2) в правах юзера или политик может быть указан запрет на изменение пароля (в том числе и по времени), это тоже надо как-то учитывать, если это учитывается разными возвращаемыми значениями (а не просто 5-й ошибкой, ибо она может быть и в том случае, если запрещено получать даже просто список юзеров) — это тогда сработает, то есть, про запрете смены пароля возвращается STATUS_ACCESS_DENIED или что-то более умное?
3) смена пароля (как удачная так и нет), AFAIK, пишет в eventlog. хотя это и мелочь.
Здравствуйте Алекс, Вы писали:
А>Здравствуйте vasketsov, Вы писали:
А>[]
А>Все это давно уже было известно. См. здесь.
Во-первых, я статью не читал, но прикольно было ее просмотреть.
Во-вторых, все еще не ясно, надо ли автору проверять пароль у этого юзера, или только проверить его существование.
Здравствуйте vasketsov, Вы писали:
V>Если надо проверить существование юзера — то можно использовать LookupAccountName. V>Но при чем здесь пароль? его тоже проверять надо на валидность?
При том, что нужно проверять на валидность тройку Login, Pwd, Domain
Re[2]: Как проверить существование юзера в домене???
Здравствуйте vasketsov, Вы писали:
V>Во-вторых, все еще не ясно, надо ли автору проверять пароль у этого юзера, или только проверить его существование.
Пароль проверять нужно.
Re[8]: Как проверить существование юзера в домене???
Здравствуйте Michael Yashin, Вы писали:
MY>Здравствуйте vasketsov, Вы писали:
V>>Во-вторых, все еще не ясно, надо ли автору проверять пароль у этого юзера, или только проверить его существование.
MY>Пароль проверять нужно.
Я бы сначала менее критично проверил как-нить, что такой юзер есть, а потом через попытку смены пароля проверил у него пароль, то есть проверку имени и пароля я бы разделил.
Здравствуйте Michael Yashin, Вы писали:
MY>Здравствуйте Алекс, Вы писали:
MY> А>>Я бы посоветовал использовать NetUserChangePassword().
MY>Получается только для себя. На лучой логин нет прав
Тогда только SSPI.
Re[6]: Как проверить существование юзера в домене???
Может у меня руки из Ж, или еще в чем дело, но этот пример не собирается.
Я попытался выдрать кусок с SSPI.
Файл sspiauth.cpp использует где-то CRT, который абсолюно непонятным для меня образом при линковке хочет увидеть WinMain !?! Я с CRT мало работал, посему не знаю, что это за ерунда и как ее обойти. Проект MFC. Пока ехе, потом будет dll (В ней то всяко не будет winmain! )
msvcrt.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
Re[7]: Как проверить существование юзера в домене???
Здравствуйте Аноним, Вы писали:
А>Здравствуйте Алекс, Вы писали:
А> А>>Все это давно уже было известно. См. здесь.
А>Может у меня руки из Ж, или еще в чем дело, но этот пример не собирается. А>Я попытался выдрать кусок с SSPI.
Там есть собранный файл winauth.exe, который CRT в никаком виде не использует.
Вообще, в sspiauth.cpp CRT используется в двух местах:
* макросы _RPTx (которые убираются препроцессором в Release-конфигурации);
* функция _tcschr, которая за собой ничего не тянет.
А>Файл sspiauth.cpp использует где-то CRT, который абсолюно непонятным для меня образом при линковке хочет увидеть WinMain !?! Я с CRT мало работал, посему не знаю, что это за ерунда и как ее обойти. Проект MFC. Пока ехе, потом будет dll (В ней то всяко не будет winmain! )
А>
А>msvcrt.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
А>
Здравствуйте, Michael Yashin, Вы писали:
MY>Есть логин, пароль, имя домена. Нужно проверить существование этого юзера в домене.
MY>Для LogonUser() не хватает привелегий.
возможно, юзер есть, но ему запрещен как локальный, так и сетевой вход на машину.
CreateProcessWithLogonW вроде бы обходит это граничение, но , как показала практика, если юзер и пароль корректны, но для другого домена (или локальной машины), то новый процесс всё равно запускается ,но грохается. При этом CreateProcessWithLogonW считает, что запуск прошел нормально.
MY>NetValidateName() —
NetValidateName я так и не смог заставить работать как тебе хочется.