Я разрабатываю приложение на C ++, и это приложение работает как служба Windows.
Мне нужно выдать себя за текущего пользователя для доступа к сетевому расположению, и для этого я использую Windows API LogonUser
а также ImpersonateLoggedOnUser
,
Проблема в том, что у меня есть только имя пользователя и информация о домене, но не пароль. Так можно ли назвать LogonUser
без предоставления пароля, чтобы получить дескриптор пользователя?
Нет, это будет довольно очевидная утечка безопасности.
Однако вы можете использовать именованный канал между процессом пользовательского интерфейса для текущего пользователя и вашей службы. Ваш сервис может затем выдать себя за другую сторону именованного канала. Это безопасно, потому что вы контролируете оба конца трубы.
Других решений пока нет …