Prawa dostępu do plików,folderów.

0

Przygotowuje się do napisania prostego odtwarzacza muzyki z możliwością ustawienia swojej playlisty. Wszystko w konsoli.
Mam problem przy wyszukiwaniu plików w katalogach i dodawaniu ich do playlisty.
Problem leży w prawach dostępu do niektórych plików,folderów.

foreach (DriveInfo drive in Drives)
        {
            if (drive.IsReady)
            {
                Dir = new DirectoryInfo(drive.Name);
                Files = Dir.GetFiles("*.mp3", SearchOption.AllDirectories); // Przy samym wyświetleniu plików też wywala błąd. 
            }
        } 

Próbowałem też z tym http://msdn.microsoft.com/en-us/library/c1f66bc2.aspx pobierałem katalogi do tablicy potem nadawałem im prawa i próbowałem wyświetlić/dodać wyniki lecz dalej ten sam problem.

Chcę by wyświetlało wyniki z wszystkich dostępnych dysków, żeby użytkownik mógł sobie wybrać sam którą nutkę dodać a żeby nie wpisywał ścieżki.

Możecie jakoś naprowadzić na dobrą drogę? Odpalenie programu jako administrator też jakoś nie rozwiązuje problemu.

0

Jaki błąd??? Dla którego katalogu występuje ten problem??? Z tego co widzę to próbujesz uzyskać dostęp nawet do System Volume Information a do niego nie ma praw dostępu nawet administrator, więc może przy nim wywala Ci wyjątek? Można sobie wróżyć..

0

Zatrzymuję się na tym:
http://imageshack.us/f/690/przechwytywanielm.jpg/
Ponieważ jako pierwszy aktywny dysk mam C:\ ale jak zmienię na E:\ a tam mam np. backup systemu to też się sypie.

0

Przede wszystkim w Win7 nie ma czegoś takiego jak "C:\Users and Settings", to tylko dowiązanie utworzone ze względu na kompatybilność ze starymi programami, dlatego nie ma sensu przeszukiwać jego zawartości. Po prostu zanim dobierasz się do plików z katalogu sprawdź, czy ma on atrybut systemowy. Jeśli tak, to do niego nie zaglądaj.

0

Chyba jednak zrobię, że będzie trzeba podać ścieżkę do folderu z muzyką.

Jest dobrze gdy folder ma jeden atrybut gdy posiada więcej jest już problem.
Omijam systemowe ale np. folder z muzyką,grami i nie które z program files maja "directory" i "read only" tak jak samo jak backup systemu i inne w c# na których dostaje wyjątki

0
ace4ur napisał(a)

Jest dobrze gdy folder ma jeden atrybut gdy posiada więcej jest już problem.

Jaki problem? Użyj metody HasFlag. I naucz się w takim razie porównywać Enumy, tutaj się przydają operatory: | i &.

0

Access to the path 'E:$RECYCLE.BIN\S-1-5-21-3620212201-1021049348-1266468940-1000$RN1OF69' is denied.
I pełno innych miejsc.
Wszystko już mam przygotowane tylko to pobieranie plików
Nie mogę jakoś sobie z tym poradzić widocznie jeszcze nie czas na takie programy ;d

Do tego jak mówiłeś nie ma documents and settings ale go wyszukuje.

ddInfo = new DirectoryInfo(drive.Name);
                dInfo.AddRange(ddInfo.GetDirectories("*.*", SearchOption.AllDirectories)); 

Jak mogę wymusić na tym wyszukiwaniu by pominęło taką i taką nazwę?

Chcę wpierw pobrać wszystkie katalogi. Potem w nich wyszukiwać pliki. Jeśli będą systemowe to omijam wyszukiwanie w nich.

0

To napisz sobie własną funkcję wyszukującą rekurencyjnie pliki, która nie będzie brała pod uwagę folderów systemowych oraz tych posiadających atrybut "NotContentIndexed". A jeśli i to za mało, to sprawdzaj dostęp do plików w bloku try i ewentualny wyjątek braku dostępu pomijaj.

1 użytkowników online, w tym zalogowanych: 0, gości: 1