Как прочитать C:\Documents and Settings
играюсь со сканером каталогов на С шарпе, но что то не нахожу как разрешить доступ на чтение некоторых папок. Когда-то попадалось, но было не нужно.
например System.IO.DirectoryInfo.GetFiles() выбрасывает
System.UnauthorizedAccessException: Access to the path 'C:\Documents and Settings' is denied.
GetAccessControl - также любить выбрасывать исключения
DirectoryInfo dir = new DirectoryInfo(currentPath); DirectorySecurity dSecurity = dir.GetAccessControl();
far manager из под этого же пользователя показывает всё и даже System Volume Information - значит решение есть.
....
вот такой изврат нашел, но не нравится с ехе
https://weblog.west-wind.com/posts/2004/Nov/06/Setting-Fil...
https://docs.microsoft.com/en-us/dotnet/csharp/programming...
The weakness in this approach is that if any one of the subdirectories under the specified root causes a DirectoryNotFoundException or UnauthorizedAccessException, the whole method fails and returns no directories. The same is true when you use the GetFiles method.
пробовал уже по другому
http://tom-shelton.net/index.php/2010/01/02/using-extensio...
c:/Users читает, но Junction нет. Ладно, попробуем найти реальный путь.
Хотя еще попадаются не читаемые каталоги:
C:\ProgramData\Microsoft DNX\BreadcrumbStore
C:\ProgramData\Documents
C:\ProgramData\Desktop
оказалось немного хитрее
DirectoryInfo dir = new DirectoryInfo(currentPath);
если dir.Attributes содержит флаг FileAttributes.ReparsePoint то это виртуальный каталог и нефиг его читать. Может указывать и на другой диск. Запускать прогу нужно с правами админа.
Интересные штуки на 10-ке вылезли
//currentPath = "C:\\Users\\Public\\Documents\\My Music"-realPath="C:\\Users\\Public\\Music" //currentPath = "C:\\Users\\Public\\Documents\\My Pictures" - realPath="C:\\Users\\Public\\Pictures" //currentPath = "C:\\Users\\Public\\Documents\\My Videos" - realPath="C:\\Users\\Public\\Videos" //currentPath = "C:\\Windows\\System32" - realPath="C:\\Windows\\SysWOW64"
говорят Symbolic Links с 2000 появились
Вот даже утилитка есть
https://docs.microsoft.com/en-us/sysinternals/downloads/ju...
32-битный процесс.
Угу, AnyCPU Build, но в этом случае под студией запускался.
Остался еще один этап - определение размера сжатых файлов, а то суммарно занятое место неправильно подсчитывается.
Еще проблемы нашлись.
Размер файла на диске - это хорошо, но еще остается системная область и поддержка файловой системы. Непонятно пока откуда эти данные брать.
И Hard links тоже не подарочек, когда один и тот же файл может "появляться" в разных каталогах.