Вы, вероятно, сталкиваетесь с частью функций UAC Vista под названием Virtual Store . Вот фрагмент из статьи:
Когда приложение выполняет запись в системную папку, доступную для записи только администраторам, Windows затем записывает все последующие файловые операции в пользовательский путь в каталоге Virtual Store, который находится по адресу% LOCALAPPDATA% \ VirtualStore. Позже, когда приложение прочитает этот файл, компьютер предоставит его в виртуальном хранилище. Поскольку инфраструктура безопасности Windows обрабатывает виртуализацию без помощи приложения, приложение полагает, что ему удалось успешно читать и записывать непосредственно в программные файлы. Прозрачность виртуализации файлов позволяет приложениям воспринимать, что они пишут и читают с защищенного ресурса, когда фактически получают доступ к виртуализированной версии.
Ваше приложение работает в контексте без повышенных прав (без прав администратора). Поэтому, когда он пытается открыть файл в папке Program Files, этот запрос прозрачно перенаправляется на ваши учетные записи виртуального магазина. Ваша копия TextPad , вероятно, работает в повышенном контексте и поэтому видит файл, который находится в реальной папке Program Files.
Если это ваш код, для которого вы можете изменить функциональность и хотите, чтобы пользователи могли использовать его без запуска с правами администратора, вам следует изменить местоположение, в котором вы храните ваши файлы конфигурации, где-нибудь в папке ApplicationData пользователя, к которой он принадлежит. Запись настроек в файл конфигурации, хранящийся в папке установки приложения, в настоящее время крайне не рекомендуется. Если у вас действительно есть настройки, которые должны применяться ко всем пользователям на машине, вы должны вместо этого записать их в папку «Все данные приложения пользователя». И даже в этом случае вам все равно придется запускать приложение в повышенном контексте по умолчанию, если вы явно не предоставите группе «Пользователи» право на запись в вашу папку.
Просто держите эту мантру в голове, когда вы пишете программное обеспечение для Vista и выше. «Пользователи могут писать только в свой профиль ... Пользователи могут писать только в свой профиль»