Код для проверки прав на запись для каталогов в Win2K / XP - PullRequest
4 голосов
/ 13 октября 2008

Привет!

Я пытаюсь проверить разрешения на запись в каталог из программы 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 ++? Если да, то как?

Спасибо

Evan

Ответы [ 3 ]

4 голосов
/ 13 октября 2008

Вы можете вызвать CreateFile с доступом GENERIC_WRITE, чтобы проверить это. http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx

Это не библиотека C ++, но она все равно считается элегантной, потому что она напрямую делает то, что вы хотите ...

1 голос
/ 13 октября 2008

Существует множество функций безопасности Windows , хотя я бы не назвал их использование особенно элегантным. Я бы порекомендовал GetNamedSecurityInfo в качестве общего решения, но решение CreateFile обладает определенной простотой и прямотой, которую я также могу оценить. :)

1 голос
/ 13 октября 2008

Используйте sec api. Вы можете спросить на Adv. Win32 api группа новостей: Новости: //194.177.96.26/comp.os.ms-windows.programmer.win32 где это часто обсуждалось (код C / C ++)

...