Этот заставил меня сойти с ума на некоторое время.
У меня есть приложение, которое ведет себя странно и утверждает, что файлы были написаны, когда они явно не сделали. Это было особенно странно, потому что когда я запускал это приложение в режиме отладки или в папке bin моего проекта, казалось, что он работал нормально. Как только я переместил его в папку внутри папки Program Files, начали происходить странные вещи.
Мне потребовалось некоторое время, чтобы отследить его, но по какой-то причине, когда я попытался написать:
C:\Program Files\<some path>\test.txt
Используя File.WriteAllText
вместо этого будет записано:
C:\Users\spencer\AppData\Local\VirtualStore\Program Files\<some path>\test.txt
Что меня еще больше смутило, так это то, что File.Exists("C:\Program Files\<some path>\test.txt")
возвращал истину.
Однако, похоже, этого не происходит по всем направлениям. В другой части моего приложения используется метод File.OpenWrite()
, который записывает файл по указанному мною пути и не выбрасывает файл в виртуальное хранилище.
РЕДАКТИРОВАТЬ: Казалось бы, StreamWriter
игнорирует указанный путь и отбрасывает файлы в виртуальном хранилище.
Задокументировано ли это поведение где-нибудь?