@vladimirchelyabinskiy

C# Как сделать правильную проверку доступа к файлу?

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

У есть код,
StreamWriter AthorizedAccessFile = new StreamWriter("AthorizedAccessFile.log", true);
            StreamWriter UnAthorizedAccessFile = new StreamWriter("UnAthorizedAccessFile.log", true);
            StreamWriter ErrorLogFile = new StreamWriter("ErrorLogFile.log", true);

            foreach (var file in fileWalker.GetFiles())
            {
                try
                {
                    AthorizedAccessFile.Write(file + "\r\n");
                }
                catch (UnauthorizedAccessException)
                {
                    UnAthorizedAccessFile.Write(file + "\r\n");
                }
                catch (Exception ErrorExceptionMessage)
                {
                    ErrorLogFile.Write(ErrorExceptionMessage.ToString() + "\r\r\n");
                    ErrorLogFile.Close();
                    continue;
                }
            }

            AthorizedAccessFile.Close();
            UnAthorizedAccessFile.Close();
            ErrorLogFile.Close();


            Console.Write("okOK");
            Console.ReadKey();


Если сижу под: скрытой учетной записью администратора (Windows 8.1)
UAC - Выключен.
То все найденные файлы с расширением .txt отправляются в файл : AthorizedAccessFile.log
(некоторые из них действительно доступны для записи.)

Если сижу под: обычным пользователем windows 7 ultimate x64
UAC - Включен.
То все найденные файлы с расширением .txt отправляются в файл : AthorizedAccessFile.log
(на самом деле файлы не доступны, вылазит: Trustedinstaller)

Как быть?

Почему у Microsoft все сделано через анальное отверстие?

Почему просто нельзя сделать, что бы было просто?

Почему на C# я легко могу проверить на доступность файлы например на веб сервере или обработать ошибки веб сервера, а с банальной проверкой файлов на WINDOWS все так сложно?
  • Вопрос задан
  • 4223 просмотра
Решения вопроса 1
Neuroware
@Neuroware
Программист в свободное от работы время
Код был явно с недосыпу:) Первое что нужно это почитать о том как вообще делится доступ, то есть гуглить что такое ACL. После осознания истинны можно посмотреть исходник например тут и на основе этого кода написать свою процедуру проверки доступа, после уже чтото писать в лог. Судя по текущему его состоянию ему вообще пофиг есть доступ или нет, он все равно в лог пишет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы