Проверка прав доступа к папке (диску). - 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;
}