Получить права на папку
Я пытаюсь получить право на папку. Цель состоит в том, чтобы создать файл внутри этой папки, когда я прошу мою программу создать этот файл. Я попробовал почти все, и это все еще не работает.
try
{
DirectorySecurity ds = Directory.GetAccessControl(path);
foreach (FileSystemAccessRule rule in ds.GetAccessRules(true, true, typeof(System.Security.Principal.SecurityIdentifier)))
{
if ((rule.FileSystemRights & FileSystemRights.CreateFiles) > 0 /*== FileSystemRights.CreateFiles)*/)
return true;
}
}
catch (UnauthorizedAccessException e)
{
return false;
}
return false;
Моя проблема: FileSystemAccessRule сказал, что у меня есть разрешения, но когда я хочу создать свой файл, появляется исключение "unauthorizedexception".
Я пытался использовать DirectoryInfo, вот так:
DirectoryInfo di = new DirectoryInfo(path);
DirectorySecurity ds = di.GetAccessControl();
вместо того, чтобы использовать объект "Каталог" напрямую. Кроме того, я думал, что моя проблема была связана с GetAccessRules, поэтому я попытался использовать SecurityIdentifier и NTAccount, оба сказали, что у меня есть все права на эту папку (FullControl), тогда как в конце я не имею никакого права, И конечно мой путь хорош, я проверил его.
Кто-то знает другой способ получить права на папку, или, если я что-то не так делаю, небольшая помощь будет удовольствием.
1 ответ
Я думаю, что проблема с вашим кодом в том, что он не проверяет конкретных пользователей, которые имеют доступ. GetAccessControl
получает список ВСЕХ пользователей, к которым применено любое правило доступа, а не только ВЫ.
Здесь уже есть отличный ответ, как правильно выполнить проверку: проверка прав доступа к каталогам и файлам в.NET