Код для проверки прав на запись для каталогов в Win2K / XP
-
10-07-2019 - |
Вопрос
Приветствую!
Я пытаюсь проверить разрешения на запись в каталог из программы Windows MFC / ATL, используя C ++.Мое первое предположение состоит в том, чтобы использовать стандартную функцию _access C, например:
if (_access("C:\mydir", 2) == -1)
// Directory is not writable.
Но, по-видимому, в Windows 2000 и XP _access не может определить права доступа к каталогу.(т.е.вкладка Безопасность в диалоговом окне свойств при щелчке правой кнопкой мыши по каталогу в Проводнике) Итак, существует ли элегантный способ определить права доступа к каталогу на запись в Windows 2000 / XP с использованием любой из библиотек Windows C ++?Если да, то каким образом?
Спасибо
Эван
Решение
Вы можете вызвать CreateFile с доступом GENERIC_WRITE, чтобы проверить это.http://msdn.microsoft.com/en-us/library/aa363858 (ПРОТИВ 85).aspx
Это не библиотека C ++, но она по-прежнему считается элегантной, потому что она напрямую делает то, что вы хотите...
Другие советы
Используйте sec api.Вы можете спросить на Adv .Группа новостей Win32 api :новости://194.177.96.26/comp.os.ms-windows.programmer.win32 где это часто обсуждалось (код C / C ++)
Есть много Функции безопасности Windows, хотя я бы не назвал их использование особенно элегантным.Я бы рекомендовал GetNamedSecurityInfo в качестве общего решения, но решение CreateFile обладает определенной простотой и прямотой, которые я также могу оценить.:)