GetDiskFreeSpaceEx Windows API выдает неверные значения даже после выполнения олицетворения

Мне нужно найти свободное место в папке в сетевом хранилище (NAS), где только один конкретный пользователь имеет полные права доступа.

С помощью GetDiskFreeSpaceEx API в C ++ это мне дает неправильные значения (мусор) когда я пытаюсь получить доступ от обычного пользователя домена без права на эту папку. Перед API я олицетворяю пользователя, у которого есть полное право доступа и нет ошибок во время олицетворения. Я упомянул значение мусора по той причине, что когда я пытаюсь получить доступ к другой папке на другом диске одного хранилища, я получаю одинаковые значения.

Если я изменяю права доступа к этой папке на «Все» и использую API без олицетворения, он возвращает правильные значения.

Для подражания, войдите в систему, я пытался с обоими LOGON32_LOGON_INTERACTIVE а также LOGON32_LOGON_NETWORK.

Я что-то здесь упускаю? Какие-то дополнительные права разрешения будут предоставлены?

Любая помощь будет оценена.

0

Решение

Соответствующее право согласно документации MSDN GetDiskFreeSpaceEx это «вызывающее приложение должно иметь FILE_LIST_DIRECTORY права доступа к этому каталогу. «

Что меня немного беспокоит, так это первая часть, «вызывающее приложение …». Олицетворение работает с потоками, но MSDN не говорит «вызывающий поток должен …».

Другой вопрос, как вы называете диск NAS. Если вы используете сопоставление букв дисков, это сопоставление букв дисков может быть недоступно при олицетворении другого пользователя.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]