На этот раз я сошел с ума на некоторое время.File.WriteAllText Weirdness В Windows 7?
У меня есть приложение, которое вел себя странно и утверждало, что файлы были написаны, когда у них явно не было. Это было особенно запутанно, потому что, когда я запускал это приложение в режиме отладки или в каталоге 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()
, который будет записывать файл в указанный фактический путь и не помещает файл в виртуальный магазин.
EDIT: Кажется, что StreamWriter
игнорирует указанный путь и бросает файлы в виртуальном магазине.
Является ли это поведение документированным где угодно?
Ну они забыли «исправить» 'File.OpenWrite()' , Также, где я должен сохранять данные, которые применяются ко всем пользователям? –
Спенсер: Ты действительно не должен этого делать. Часть «разработки для Vista» заключается в том, что пользовательские данные должны быть изолированы. Сохранение данных, общих для всех пользователей, требует повышенных разрешений и, вероятно, должно быть выполнено во время установки программного обеспечения (поскольку у вас будут права администратора в этот момент времени). –
+ Я не уверен, что его статья совершенно правильная. У меня есть права на запись в папку. –