zarządzanie plikami w windows 7 oraz vista

0

Witam. Mam taki problem: Piszę aplikację w której nie potrafię sobie poradzić z kopiowaniem plików w systemach nowszych niż xp. Próbowałem różnych metod z codeguru, msdn'a ale za każdym razem debuger wywala błąd, że nie można uzyskać dostępu do określonego katalogu (w moim przypadku dysk C lub katalog windows).

Access to the path 'C:\a.dll' is denied.

Próbowałem bawić się z klasami Principal, Access Control, Permissions ale najwyraźniej brakuje mi troszkę wiedzy z tego zakresu:)
Czy mógłby mi ktoś tak w krokach wyjaśnić w jaki sposób nadać odpowiednia prawa katalogom i plikom by dało się bez problemu pracować na nowszych systemach?

Dodam że koniecznością jest kopiowanie plików właśnie w te miejsca. Wymaga tego program.

Pozdrawiam

0

Nie po to istnieje Odpowiedz, żeby dyskusję On Topic przeprowadzać w komentarzach ;P

0

Wyobraź sobie, że prawo do modyfikowania root directory czy folderów systemowych mają tylko administratorzy
Nie do końca w tym problem. W Viście i 7 nawet administrator ma prawa domyślnie ograniczone ze względu na mechanizm UAC. Pełne prawa pojawiają się dopiero po potwierdzającym okienku (takim z ciemnym tłem). Jak je wywołać z własnego programu - nie wiem.

1

Jeżeli aplikacja nie potrzebuje uprawnień administratora do podstawowego działania, uruchamiasz ją "asInvoker", czyli domyślnie. Będzie mógł ją uruchomić zwykły użytkownik. Jeżeli jakaś akcja w tym programie będzie potrzebowała uprawnień administracyjnych, po kliknięciu w przycisk z tarczą (nie musi oczywiście żadnej tarczy, to tylko informacja dla użytkownika), uruchamiany jest nowy proces z "requireAdministrator". Nowy proces robi, to co ma zrobić i się kończy. I tak powinno to wyglądać w normalnym programie. Przy uruchamianiu nowego procesu z podwyższonymi uprawnieniami, Windows sam zapyta o zgodę na uruchomienie (gdy pracujemy na koncie administratora i mamy włączony UAC) bądź o hasło.

Istnieje również takie coś jak tworzenie obiektów COM z podwyższonymi uprawnieniami w procesie bez nich (http://msdn.microsoft.com/en-us/library/ms679687.aspx).

Jeżeli tworzysz aplikację, która będzie tylko wykonywała operacje wymagające podwyższonych uprawnień, odpal ją od razu z "requireAdministrator" i zwykły użytkownik w ogóle nie będzie mógł jej uruchomić.

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