Если я вызываю функцию WNetGetUniversalName()
для получения UNC-пути от диска, сопоставленного в текущем сеансе, функция завершается успешно.
Но ...
- Если я создаю новый вход в системуsesssion путем вызова
LogonUser()
(пользователь входа в систему такой же, как и создатель процесса) - Олицетворение пользователя, вошедшего в систему, путем вызова
ImpersonateLoggedOnUser()
function - И снова вызовите
WNetGetUniversalName()
, функциювозвращает ошибку 2250 (ERROR_NOT_CONNECTED
)
Дело в том, что я должен запускать этот процесс как службу (в учетной записи SYSTEM), поэтому мне может потребоваться выдать себя за пользователя, чтобы получить подключенные дискиэтот пользователь и связанные с ним сетевые пути.Как я проверил, доступ к этой информации не возможен во время сеансов пользователя.
Где Windows хранит эту информацию, чтобы можно было переназначить диски при повторном входе пользователя в систему?Я обнаружил, что история сопоставленных сетевых путей хранится в реестре под ключом: HKEY_USERS\<User SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\Map Network Drive MRU
, но в нем не указано, будет ли сопоставлен путь UNC при повторном входе пользователя и соответствующая буква диска.
Пожалуйста, помогите.