Проверка прав доступа к папке (диску). - C#

Узнай цену своей работы

Формулировка задачи:

Меня интересует такой вопрос, как можно проверить возможно ли создать файл в папке. Можно конечно попробовать создать файл и в случае ошибки, мы узнаем можно или нет. Но хотелось бы без создания файла это сделать...Заранее спс....

Решение задачи: «Проверка прав доступа к папке (диску).»

textual
Листинг программы
        [DllImport("kernel32.dll", SetLastError = true)]
        static extern IntPtr CreateFile(
              string lpFileName,
              uint dwDesiredAccess,
              uint dwShareMode,
              IntPtr lpSecurityAttributes,
              uint dwCreationDisposition,
              uint dwFlagsAndAttributes,
              IntPtr hTemplateFile
            );
 
        [DllImport("kernel32.dll")]
        static extern int GetLastError();
 
        [DllImport("kernel32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool CloseHandle(IntPtr hObject);
 
        /// <summary>
        /// Метод проверяет возможность создания файла в папке.
        /// </summary>
        /// <param name="folder">Путь к папке.</param>
        /// <returns>Возвращает true, если файл можно создать, иначе false.</returns>
        static bool CanCreateFile(string folder)
        {
            if (!folder.EndsWith("\\"))
                folder += "\\";
 
            folder += Path.GetRandomFileName();
            bool flag = true;
 
            IntPtr hFile = CreateFile(folder, 0x40000000U, 0x1U, IntPtr.Zero, 0x1U, 0x80 | 0x4000000U, IntPtr.Zero);
            if (hFile == (IntPtr)(-1) && GetLastError() != 0) {
                flag = false;
            }
 
            CloseHandle(hFile);
            return flag;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы