2009-09-25 1 views
4

У меня есть код, который читает конфигурационный файл, но когда я открываю файл в TextPad, я вижу разные значения, чем это делает мое приложение. Я проверил его с помощью Блокнота. Блокнот согласен с моим приложением, TextPad показывает что-то еще.Странная возможная проблема с «теневой копией», где два редактора отображают различное содержимое.

Это на Vista x64 Business.

Любая идея, что может быть причиной этого? Я просмотрел детали Context Menu->Properties->Previous Versions, но в нем говорится: «Нет доступных версий».

Вот шаги, чтобы повторить (я не могу сделать это случиться надежно):

  1. установлен .NET приложение в файлах программы.
  2. Это приложение читает конфигурационный файл, но падает.
  3. Я вручную отредактирую этот файл конфигурации в Textpad.
  4. Изменение не вступает в силу.
  5. Я открываю файл конфигурации в Блокноте и вижу что-то другое.
  6. Попробуйте сделать изменения в блокноте и экономии, и получить это сообщение об ошибке:

Блокнот

Невозможно создать каталог C: \ Program Files (x86) \ Daniel Шаффер \ WorkingOn для FogBugz \ FogBugz> Файл WorkOn.exe.config.

Убедитесь, что путь и имя файла верны.

Я не могу поставить содержание здесь, как это XML и кодируется superuser.com, но вот ссылка на скринкаст: http://screencast.com/t/zhERl7mocp4.

+0

Посмотрев на скринкаст: Мне очень любопытно, что такое объяснение. –

+0

Также задал вопрос о суперпользователе - http://superuser.com/questions/46731/strange-possible-shadow-copy-issue-where-two-editors-show-different-contents – ChrisF

ответ

3

Звучит как случай, когда у вас нет администратора, когда вы устанавливали приложение. Иногда, когда вы устанавливаете приложение без каких-либо админов, оно ведет себя очень странно из-за модели безопасности vista. У меня была аналогичная проблема с этим прошлым годом. Это было не совсем так, но это было странное поведение, пока я не понял, что это была модель безопасности Vista. Он поднимает его на контекст безопасности приложения/пользователя, из того, что я знаю, поскольку мой мозг застыл, когда я читал об этом, так как это была чистая гадость и практически бесполезна из того, что я вижу.

Попробуйте открыть текстовую панель (отличное приложение) с помощью «Запуск от имени администратора», а затем отредактируйте конфигурацию. Посмотрите, что произойдет. Если он остается тогда таким же, то его проблема приносит. Если это не сработает, деинсталлируйте приложение и установите его как администратора. Это даст приложению доступ к администраторам писем администратора. Затем, когда вы редактируете конфигурацию. Посмотрите, работает ли это.

Взгляните на это. Вы можете поднять приложение для запуска под управлением администратора, используя методы, найденные здесь. How to elevate an application.. Попробуйте все это, прежде чем переустанавливать.

Если это не сработает, отправьте свой вопрос на ошибку сервера. Также разместите его на подходящем форуме MSDN.

Надеюсь, что помогите. Боб.

2

Это интересно. Я предполагаю, что здесь работает функция Vista под названием UAC Virtualization (aka Data Redirection).Он в основном перенаправляет устаревшие приложения на %USERPROFILE%\AppData\VirtualStore\Program Files\..., чтобы они могли записывать файлы в каталог программы.

Возможно, Textpad пытается открыть файл в режиме чтения-записи, в то время как ваше приложение и Блокнот используют его только для чтения? Вы можете запустить Process Monitor, чтобы увидеть точное волшебство, и пожалуйста дайте мне знать ;-)

1

Попробуйте просто раздеться, что символ пробела от имени приложения; моя догадка связана с построением канонического пути

0

попытаться скопировать файл на другой путь и снова открыть его. посмотрите, изменит ли он результат.

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. – Nasreddine

+0

Спасибо за подсказку. – Mehran

0

Одна вещь, которую вы можете сделать, это наблюдать, какой точный файл каждый из этих методов заканчивается открытием. Для этого

  • Запуск Process Monitor из sysinternal suite.
  • смотреть только для операций с файлами (отменить операции реестра на правой панели)
  • выбрать только свой собственный процесс (отфильтровать все процессы, которые вы не заботитесь о том, или просто include свое имя процесса в список фильтров)

Вы также можете просто использовать функцию поиска для вашего имени файла, это может быть более быстрый маршрут.

Монитор процесса помог мне найти так много проблем, это потрясающе.

Смежные вопросы