Vista Phantom Directory - PullRequest
       44

Vista Phantom Directory

2 голосов
/ 18 февраля 2009

У нас есть программа, которая проверяет установщик на наличие файла конфигурации, и, если он существует, он не копирует этот файл (предполагается, что пользователь изменил свой файл конфигурации и хочет сохранить эти изменения). К сожалению, это приложение, предшествующее Vista, и оно сохраняет конфигурационный файл в Program Files. Проблема в том, что если вы вручную удаляете каталог, когда он переустанавливает, определенный API все еще думает, что там есть каталог. VB6, например, и его диалог поиска файлов видит папку, однако проводник, оболочка cmd и т. Д. Не могут видеть папку. Запись поверх файла по-прежнему оставляет старый файл (для некоторых API, но не для проводника), который нельзя удалить, кроме формы в диалоговом окне «Обзор файла».

Что происходит с этими папками Phantom и как мы удаляем файл, чтобы все API видели одно и то же? Может быть, это как-то связано с TxF или индексатором для поиска, но как установщик, который мы используем (InnoSetup), так и части приложения (части, написанные на VB6) видят старую версию файла. , а все остальное видит текущая версия.

Ответы [ 4 ]

5 голосов
/ 18 февраля 2009

Не знаю, нахожусь ли я на правильном пути, но разве Vista не виртуализирует% programfiles% для приложений, которые пытаются записать в него или иным образом помечены как «неправильно»? (и, следовательно, вместо этого перемещает его куда-то в пользовательскую часть файловой системы, не сообщая об этом устаревшему приложению - делая его своего рода прозрачным) ..?

Виртуальное хранилище Перенаправленные файлы хранятся где-то в% appdata% - вы также можете узнать местоположение, проверив опцию «Файлы совместимости» в проводнике в расположении с псевдонимом. Насколько я знаю, вам нужно прекратить запись в% programfiles%, чтобы избавиться от этого поведения.

5 голосов
/ 19 февраля 2009

Как сказал Оскар Дюверборн, очень вероятно, что вы видите поведение виртуализации Vista.

Когда на компьютере включен контроль учетных записей (UAC), обычные пользователи и программы без повышенных прав не могут писать в папку «Программы». Вместо этого Windows молча перенаправляет файлы в соответствующую подпапку %AppData%\Local\VirtualStore (например, C:\Users\MyUser\AppData\Local\VirtualStore).

Если вы просматриваете настоящую папку в Проводнике, вы увидите кнопку панели инструментов «Файлы совместимости», которую вы можете использовать для просмотра виртуального хранилища.

Обратите внимание, что это только поведение совместимости из Windows - ваша программа должна записать в свою собственную подпапку %AppData%.

Для получения дополнительной информации см. эту статью в TechNet Magazine .

0 голосов
/ 05 мая 2009

Ссылка TechNet от Ant выше (принятый ответ) больше не действительна. Новая ссылка:

http://support.microsoft.com/kb/927387 - Общие проблемы виртуализации файлов и реестра в Windows Vista

0 голосов
/ 18 февраля 2009

Вы имеете в виду папку AppData (C: \ Documents and Settings \ Имя пользователя \ AppData)? Я не на моей машине Vista, но я думаю, что это путь, и это не стирается после удаления.

...