powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ImpersonateLoggedOnUser без прав администратора
7 сообщений из 7, страница 1 из 1
ImpersonateLoggedOnUser без прав администратора
    #39819139
aford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет! Может кто сталкивался? При регистрации в домене локально под другим пользователем ( не админом ) функция
ImpersonateLoggedOnUser вообще не возвращает результат. Служба просто молчит, хотя должна выдавать "Успешно" или "Не успешно".
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
if LogonUser(PChar(UserName), PChar('WORKGROUP'), PChar(Password),
  LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, h) = True then
  if ImpersonateLoggedOnUser(h) then
  begin
    WriteLog('Успешно');
    // что-то делаем
    // ...
    // ...
    RevertToSelf;
    CloseHandle(h);
  end else
    WriteLog('Не успешно')
else
  WriteLog('Ошибка LogonUser!');
...
Рейтинг: 0 / 0
ImpersonateLoggedOnUser без прав администратора
    #39819154
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aford,

Как она может "не выдавать результат"?.. Вылетает с эксепшеном?
Может просто у WriteLog прав не хватает, чтобы сообщить о результате?
...
Рейтинг: 0 / 0
ImpersonateLoggedOnUser без прав администратора
    #39819170
aford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alekcvp, в лог вообще ничего не пишет, служба сама по себе работает.
Даже когда пропускаю все действия и сразу после RevertToSelf пытаюсь выдать что-то в лог - тоже тишина.
Насчет не хватает прав - спасибо за наводку, буду думать)
...
Рейтинг: 0 / 0
ImpersonateLoggedOnUser без прав администратора
    #39819306
aford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Причем этот же код с логином и паролем администратора отрабатывает. Поискал в интернете решение - добавил в политики безопасности пользователя в
- создание маркерного объекта;
- вход в качестве пакетного задания;
- вход в качестве службы;
Проблему так и не решил.
...
Рейтинг: 0 / 0
ImpersonateLoggedOnUser без прав администратора
    #39819328
aford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот это записывается в журнал безопасности:
авторНовому сеансу входа назначены специальные привилегии.

Субъект:
ИД безопасности: WORKGROUP\user1
Имя учетной записи: user1
Домен учетной записи: WORKGROUP
Код входа: 0x42EE0E0C

Привилегии: SeCreateTokenPrivilege

Значит все-таки проходит подключение? Но почему служба дальше вообще ничего не делает и не отправляет сообщения в лог?
...
Рейтинг: 0 / 0
ImpersonateLoggedOnUser без прав администратора
    #39819426
aford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем-то да. После ImpersonateLoggedOnUser у процесса с новым контекстом нет доступа к процедурам модуля (т.к. заходим в систему под логином и паролем, где уже нет исполняемого файла службы), из-за чего где-то наверное вываливается исключение.
Если сразу после ImpersonateLoggedOnUser вызвать RevertToSelf, то служба возвращает предыдущий контекст процесса и продолжает работать дальше под system.
...
Рейтинг: 0 / 0
ImpersonateLoggedOnUser без прав администратора
    #39819433
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aford,

Для отладки - поставьте временно параллельно какой-нибудь отладчик, типа такого , чтобы потом было проще отлавливать что именно и где не работает.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ImpersonateLoggedOnUser без прав администратора
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]