mild personality changes and possibly death ([info]lepin) wrote,

Как потерять файлы старых программ (VirtualStore)

Представьте себе:

Вы работаете на Windows 7.
У вас есть старая программа, которая хранит пользовательские данные в своей папке (например, The Bat!). Это программу вы скопировали со старого компьютера и после установки Windows7 опять поместили в папку Program Files, она благополучно работает.
Затем вы хотите сделать резервную копию. Вы копируете папку старой программы в сторонку и чувствуете себя спокойно.

Допустим, потом вы опять переставляете систему (в моем случае - потому что Windows7 свалилась с синим экраном смерти так, что файловая система чистила потом ошибки час, и в результате система осталась неработоспособной, все было в глюках, половина программ выдавала странные разнообразные ошибки).
Копируете из бэкапа последнюю копию старой программы вновь в Program Files.
Запускаете - а там нет данных! То есть, данные там только на момент, когда вы исходно поставили Windows 7. А последующих - уже нет!

Оказывается, Windows 7 считала, что программам не положено ничего писать в свою папку. Но чтобы они продолжали работать, система фактически пишет изменяемые этой программой файлы не в ее папку, а в сторонку, в папку VirtualStore где-то в глубинах Documents&Settings. Это происходит незаметно для программы: та думает, что она пишет к себе.
А вы только думаете, что делаете резервную копию, сохраняя папку программы. На самом деле, копировать надо не ее, а содержимое VirtualStore.

И если этого не знать, то после перестановки системы данные будут потеряны.
Как и произошло, увы, со мной.
Tags: backups, windows

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    Your IP address will be recorded 

  • 22 comments

[info]svarttestare

January 23 2010, 18:32:07 UTC 2 years ago

По всем правилам, корректно написанная программа не должна хранить данные о своей конфигурации в инсталляционном каталоге, а должна хранить их в профиле пользователя, для которого устанавливалась.
Так как программисты редко чешутся о том, чтобы писать корректные программы для среды Windows (во всяком случае для XP, Vista, 7), то MS пошла на такой шаг, включив файловую и реестровую виртуализацию.
По правилам хорошего тона, программа должна хранить установки в AppData в пользовательском профиле. Тогда, при резервном копировании пользовательского профиля (например, средством Windows Backup) сохраняются не только пользовательские данные - музыка, фотки и прочее, но и все установки программ, которыми он пользуется.

[info]lepin

January 24 2010, 02:16:11 UTC 2 years ago

да-да, я понимаю

Это просто программы, которые писались еще на Windows95, где вроде не было такой логики.
Что делается виртуализация - понятно. Неприятно просто, что Windows не предупреждает об этом.

[info]svarttestare

January 24 2010, 02:22:23 UTC 2 years ago

Re: да-да, я понимаю

Windows же не может предугадать и никак не рассчитывает на то, что вы делаете "резервное копирование" путём ручного копирования папок из Program Files :)

[info]aamonster

February 18 2010, 15:58:51 UTC 2 years ago

Re: да-да, я понимаю

На самом деле не вполне понятно, почему при ручном копировании нужные файлы не были сохранены. Бэкапилка тянула данные, притворяясь не тем юзером?

[info]svarttestare

February 18 2010, 16:04:10 UTC 2 years ago

Re: да-да, я понимаю

А от имени какого пользователя работала бэкапилка?

[info]lepin

February 18 2010, 16:07:23 UTC 2 years ago

какая еще бэкапилка?

Я вручную все копировал

[info]aamonster

February 18 2010, 16:05:35 UTC 2 years ago

Вы линуксоид/юниксоид или просто очень молоды и не застали DOS?

С точки зрения человека, работающего на однопользовательской машине, корректная установка программы - это копирование ее каталога на винчестер. А корректное удаление - это стирание каталога. Если программа пишет что-то за пределы каталога (за исключением случая, когда пользователь ей явно это указал) - это криминал и загаживание диска.
(собственно, система VirtualStore - некий компромисс однопользовательского подхода и описанного вами многопользовательского... все лучше, чем когда программист руками распихивает файлы в 10 мест на диске + в реестр)

[info]svarttestare

February 18 2010, 16:12:25 UTC 2 years ago

Как вам не стыдно называть меня *никсоидом? :)))
Windows Vista и 7 изначально уже не однопользовательские - там есть чёткое разделение на администратора и стандартных пользователей. В XP такое тоже было, но практически (а зря!) никем не использовалось.
Для приложений, которые могут называться "полностью совместимыми с Windows Vista и 7" есть ряд правил, установленных разрабочиками ОС. Все они очень четко описаны в соответствующих источниках и двоякого трактования не допускают:
http://www.microsoft.com/rus/windows/appCompat/default.mspx

[info]aamonster

February 18 2010, 17:49:39 UTC 2 years ago

Я в курсе этих вещей - просто несколько с другой стороны (как разработчик).
А как юзер - я матерюсь на программы, которым зачем-то нужен инсталлятор и которые кидают свои файлы хрен знает куда, и предпочитаю portable-версии.

А M$ постоянно выдумывает какую-то новую "silver bullet". Чего стоят их метания вокруг dll hell.

[info]svarttestare

February 18 2010, 17:58:09 UTC 2 years ago

MS как только может пытается сгладить последствия программистов-недоучек, которые плевали на то как надо писать программы. Вот и получается, что самим разработчикам ОС приходится ставить "костыли", чтобы конечный пользователь себя лучше чувствовал.
Цитата из официального источника - руководства по обеспечению совместимости ПО с Vista и 7:
«Несмотря на усилия, прилагаемые компанией Microsoft, некоторые производители программного обеспечения продолжают использовать устаревшие функции операционной системы, некорректно выполняют операции по проверке версий ОС, не следуют рекомендациям по работе с файловой системой и зачастую не руководствуются советами по обеспечению корректной работы приложений в новых версиях системы. Все это приводит к тому, что в операционной системе Microsoft Windows Vista есть более 5600 «системных заплаток» (shims) для обеспечения корректной работы приложений различных производителей — от утилит китайских производителей до крупных продуктов известных фирм. В Windows 7 число «системных заплаток» увеличилось — в бета версии новой операционной системы их насчитывается более 5700!»

[info]aamonster

February 18 2010, 18:08:16 UTC 2 years ago

Одни недоучки призывают к порядку других, да =).

Не, конечно, M$ в плане "дисциплины разработки" на голову выше большинства прочих разработчиков (и меня в том числе, что уж). Но они тоже не святые, и некоторые их решения, мягко говоря, являются спорными.

[info]auto194419

January 23 2010, 19:45:18 UTC 2 years ago

микрософт = зло! но про людей, до сих пор живущих в бате, я даже не знаю, что сказать обидное :)))

[info]lepin

January 24 2010, 02:17:06 UTC 2 years ago

они консерваторы

а консерваторы всегда правы (хотя я, конечно, тоже не понимаю пользования батом)

[info]marusja

January 24 2010, 06:36:46 UTC 2 years ago

А чего у вас собственно с Батом?
Программа как программа, удобная.
Блин, если бы не русские кодировки, я бы до сих пор пользовалась программой Eudora и радовалась бы :))

[info]aamonster

February 18 2010, 16:06:56 UTC 2 years ago

Чуть удобнее ThunderBird (и сильно удобней прочих конкурентов), но платная. Почему бы не пользоваться?

[info]lepin

February 18 2010, 16:08:05 UTC 2 years ago

потому что любые клиенты, в которых нет объединения пи

;)

[info]aamonster

February 18 2010, 17:58:51 UTC 2 years ago

Re: потому что любые клиенты, в которых нет объединения

Вы б дописали текст... А то сабж порезался.

Если имели в виду "клиенты, в которых нет объединения писем в треды" - то спасибо, этого г-на не надо. Imho любой, кто имел дело с более вкусными интерфейсными решениями, типа того, что было в древнем фидошном досовском GoldEd'е, от такого объединения в стиле аутглюк-экспресс плеваться будет.

[info]aamonster

February 18 2010, 18:23:49 UTC 2 years ago

Re: потому что любые клиенты, в которых нет объединения

... какой-то я агрессивный не в меру. Вредно комментировать с сильным насморком.

[info]marusja

January 24 2010, 06:37:02 UTC 2 years ago

Чёрт, обидно ужасно.
Сочувствую.

[info]aamonster

February 18 2010, 15:56:29 UTC 2 years ago

Вы изрядно отстали от жизни - эти нововведения были уже в Висте.

[info]Chirkin Aleksey

November 12 2010, 06:49:20 UTC 1 year ago

Mac OS X forever! ;)

Если честно, не понимаю людей которые до сих пор пытаются найти какую-то логику и здравый смысл в поступках Microsoft... Они выпускают свои продукты напичканные новыми "фишками", которые только усложняют жизнь конечных пользователей.
Задумайтесь всерьез о переходе на другую операционную систему, берегите свою нервную систему.

[info]Дмитрий Стасенко

August 31 2011, 09:12:47 UTC 8 months ago

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
"EnableLUA" = 0

этот параметр в реестре отключит контроль учетных записей и папка virtualstore перестанет быть нужной, если кто этого еще не знает.

P.S. после изменения параметра "EnableLUA" на 0 нужна перезагрузка
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…