Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Как прочитать C:\Documents and Settings

540  
AlexNek патриот27.03.19 23:01
AlexNek
NEW 27.03.19 23:01 
Последний раз изменено 27.03.19 23:11 (AlexNek)

играюсь со сканером каталогов на С шарпе, но что то не нахожу как разрешить доступ на чтение некоторых папок. Когда-то попадалось, но было не нужно.


например 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...

#1 
dymanoid местный житель27.03.19 23:15
dymanoid
27.03.19 23:15 
в ответ AlexNek 27.03.19 23:01
AlexNek патриот28.03.19 11:47
AlexNek
NEW 28.03.19 11:47 
в ответ dymanoid 27.03.19 23:15

Или это только к файлам относится или я что то не так делаю. Никаких изменений не наблюдаю.


System.UnauthorizedAccessException: Access to the path 'C:\Documents and Settings' is denied.

at System.IO.DirectoryInfo.GetDirectories()

#3 
NightWatch коренной житель28.03.19 12:51
NightWatch
NEW 28.03.19 12:51 
в ответ AlexNek 27.03.19 23:01

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.

#4 
AlexNek патриот28.03.19 13:19
AlexNek
NEW 28.03.19 13:19 
в ответ NightWatch 28.03.19 12:51

пробовал уже по другому

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

#5 
AlexNek патриот28.03.19 16:32
AlexNek
NEW 28.03.19 16:32 
в ответ AlexNek 28.03.19 13:19

оказалось немного хитрее

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"

#6 
NightWatch коренной житель28.03.19 19:45
NightWatch
NEW 28.03.19 19:45 
в ответ AlexNek 28.03.19 16:32
Интересные штуки на 10-ке вылезли

Они вылезали и на 7-ке. А может и еще раньше.

C:\\Users\\Public\\Documents\\My Music

Junction

currentPath = "C:\\Windows\\System32" - realPath="C:\\Windows\\SysWOW64"

32-битный процесс.

#7 
AlexNek патриот28.03.19 20:20
AlexNek
NEW 28.03.19 20:20 
в ответ NightWatch 28.03.19 19:45
говорят Symbolic Links с 2000 появились


Вот даже утилитка есть

https://docs.microsoft.com/en-us/sysinternals/downloads/ju...


32-битный процесс.


Угу, AnyCPU Build, но в этом случае под студией запускался.


Остался еще один этап - определение размера сжатых файлов, а то суммарно занятое место неправильно подсчитывается.

#8 
NightWatch коренной житель28.03.19 20:49
NightWatch
NEW 28.03.19 20:49 
в ответ AlexNek 28.03.19 20:20
определение размера сжатых файлов

https://docs.microsoft.com/en-us/windows/desktop/api/filea...

#9 
AlexNek патриот28.03.19 20:59
AlexNek
NEW 28.03.19 20:59 
в ответ NightWatch 28.03.19 20:49

ну быстрые тут у нас, я еще и добраться до студии не успел. glassglassglass

#10 
AlexNek патриот28.03.19 23:52
AlexNek
NEW 28.03.19 23:52 
в ответ AlexNek 28.03.19 20:59

Не, проблема не в сжатых файлах. DriveInfo не совпадает с подсчитанным объемом.

Надо видимо еще и размер кластера учитывать.

И System Volume Information читать.

#11 
AlexNek патриот31.03.19 12:14
AlexNek
NEW 31.03.19 12:14 
в ответ AlexNek 28.03.19 23:52

Еще проблемы нашлись. хммм

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

И Hard links тоже не подарочек, когда один и тот же файл может "появляться" в разных каталогах.

#12