Код для проверки прав на запись для каталогов в Win2K / XP

StackOverflow https://stackoverflow.com/questions/198071

Вопрос

Приветствую!

Я пытаюсь проверить разрешения на запись в каталог из программы 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 обладает определенной простотой и прямотой, которые я также могу оценить.:)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top