2013-08-05 15 views
8

Używam C# z .NET 2.0Jak zapobiec pliku przekierowanie z danymi programu do VirtualStore ProgramData

jestem zapisywania moich danych programu w pliku poniżej: C:\Program Data\MyProgramName\fileName.xml

Po zainstalowaniu i uruchomieniu mój wniosek jednego czas odinstalowałem (podczas odinstalowywania usuwam wszystkie pliki z "danych programu"), a następnie ponownie instaluję aplikację i uruchamiam ją.

Dziwne jest to, że moja aplikacja zaczęła się tak, jakby pliki w danych programu istniały - oznacza to, że miałem stare dane w mojej aplikacji, mimo że plik danych został usunięty.

Podczas pracy:

File.Exists ("C: \ Program Data \ MyProgramName \ nazwa_pliku.xml")

mam "true", choć wiedziałem, że na pewno plik nie istnieje.

Rzecz stała się dziwniejsza, gdy uruchomiłem aplikację jako administrator, a plik nie istniał.

Po badaniach, okazało się, że podczas uruchamiania mojej aplikacji bez priviliges administratora zamiast się:

"C: \ Program Data \ MyProgramName \ nazwa_pliku.xml" mam „C: \ Users \ nazwa_użytkownika \ AppData \ Local \ VirtualStore \ ProgramData \ MyProgramName \ nazwa_pliku.xml”

i rzeczywiście tam był plik, który istniał od poprzedniej instalacji (to ja oczywiście nie usuwać, bo nie wiem, że to istniało). więc poprowadź mnie, jak mogę to zatrzymać, gdy aplikacje działają bez uprawnień administratora. nie chcę tworzyć żadnego pliku automatycznie w folderze VirtualStore. proszę omówić wszystkie możliwe sposoby, aby to zatrzymać. dzięki

Odpowiedz

4

Po pierwsze, zadaj sobie pytanie, czy to musi być globalnie zapisane dla wszystkich użytkowników?

Jeśli nie musi być, należy zapisać plik w Danych aplikacji, można uzyskać ścieżkę z Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), należy zawsze niezawodnie rozszerzać do C:\Users\Username\AppData\Roaming\. Zwróć uwagę, że ta ścieżka jest unikalna dla każdego użytkownika.

Jeśli musisz, nie masz szczęścia. Nie ma niezawodnego sposobu na przechowywanie danych aplikacji dla wszystkich użytkowników bez uprawnień administratora (lub UAC) w każdym systemie Windows XP, który nie jest zbyt hackowaty, jak na przykład przechowywanie danych użytkownika publicznego (co może, ale nie musi, mogę ". t sprawdź teraz).

+1

pliku przekierowanie do VirtualStore zdarzyć tylko w win7 nie w XP. zawsze chcę utworzyć plik z miejsca, w którym działa nasza aplikacja. Plik jest globalny dla wszystkich użytkowników. Po prostu poprowadź mnie, jak mogę to zatrzymać. – Thomas

+0

@Thomas to ze względu na poprawę bezpieczeństwa w Vista i nowszych. W systemie Windows XP wszystkie konta administratora uruchamiają wszystkie aplikacje, ponieważ ograniczenia administratora i folderów są bardzo złe. Chodzi mi o to, że VirtualStore to funkcja bezpieczeństwa, której nie można obejść bez zmiany katalogu. Możesz spróbować zapisać ustawienia w folderze Dane aplikacji profilu publicznego, ponieważ pozwoliłoby to wszystkim kontom uzyskać do niego dostęp. –

+1

Nie piszę nic w wirtualnym folderze sklepu. Czy piszę/czytam plik z mojej aplikacji, ale win7 skopiuj ten plik do wirtualnego sklepu \ ... i zmuś moje aplikacje do odczytu pliku z tego miejsca. U plzz powiedz mi, jak to możliwe Uruchamiam moje aplikacje z administratorem automatycznie, gdy rozwiną się z VS2005. użytkownik logowania może być administratorem lub nie, ale moje aplikacje będą działać jako administrator. w VS2005 nie ma sposobu na dodanie pliku manifestu. Poinformuj mnie, jak poradzić sobie z tą sytuacją. dzięki – Thomas

-1

Znalazłem obejście tego problemu podczas przesyłania bardzo starej aplikacji win32 do systemu Windows 7 & 10. Program zapisał do bazy danych w C: \ Program Files ... ale system operacyjny automatycznie zmienił ścieżkę do sklepu wirtualnego . Baza danych była jednak wymagana na całym świecie. Zmieniając tryb zgodności na Windows 95 lub XP SP2 i zawsze działając jako administrator, baza danych pracowała bezpośrednio w C: \ Program Files \ etc.

Są to konsekwencje dla bezpieczeństwa i pudełko zostało usunięte z wszystkich sieciach i adaptery wyłączony itd

+0

Zmiana trybu zgodności na WIndows XP nie jest dobrą alternatywą. – vijayst