none
Как заблокировать папку на время пока с ней работает программа с помощью Win32 API? RRS feed

  • Вопрос

  • Добрый день.

    Как с помощью Win32 API-функций заблокировать папку на время, пока с ней работает программа?
    Например, программа просматривает файлы в папке. Или программа удаляет папку.
    Как сделать, чтобы в это время другие пользователи и другие программы на этом же компьютере не могли в этой папке:
    * создавать, удалять папки, файлы
    * открывать файлы в режиме "ReadWrite"?
    При этом моя программа могла делать действия в режиме "ReadWrite".




    • Изменено Arankev 7 октября 2019 г. 13:37
    5 октября 2019 г. 9:26

Ответы

  • Я думаю ответ "никак". Путем написания своего драйвера - может быть, но в обычном WinAPI ничего не припомню подходящего под это специфичное сочетание требований.

    LockFile принимает дескриптор файла, который может представлять и папку, но это все равно ничего не даст для решения задачи. Даже если это сработает, оно заблокирует эту папку наглухо, так что работать с ней можно будет только через тот же дескриптор, путем побайтовой модификации NTFS-структур. Это явно не то, что нужно...

    7 октября 2019 г. 17:16

Все ответы

  • Здравствуйте,

    Можно закрыть доступ к файлу через: LockFile function

    Другой вариант смотреть в сторону Access Control Lists


    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    7 октября 2019 г. 8:09
    Модератор
  • Добавил ещё одно условие в первом посте. Другие программы на этом же компьютере тоже не должны иметь доступ.

    Access Control Lists - не блокирует другие программы на этом же компьютере.

    LockFile function. Я начал читать справку, в ней не упоминается папка. У меня вопрос в первом посте про папку.

    7 октября 2019 г. 13:41
  • Я думаю ответ "никак". Путем написания своего драйвера - может быть, но в обычном WinAPI ничего не припомню подходящего под это специфичное сочетание требований.

    LockFile принимает дескриптор файла, который может представлять и папку, но это все равно ничего не даст для решения задачи. Даже если это сработает, оно заблокирует эту папку наглухо, так что работать с ней можно будет только через тот же дескриптор, путем побайтовой модификации NTFS-структур. Это явно не то, что нужно...

    7 октября 2019 г. 17:16