Приложение VB6 для Windows 7 сохраняет только виртуальный магазин
Я отвечаю за поддержку приложения VB6, и я столкнулся с нечетным поведением в Windows 7.
Когда приложение установлено в файл программы (x86) (или я предполагаю, что в какой-либо директории нет разрешений на запись), большую часть времени, когда он идет для сохранения файла локально, он попадает в это странное место виртуального магазина, Это приемлемо. Но иногда он попытается сохранить локально и дать сообщение о том, что вам не разрешено сохранять здесь и спрашивать, хотите ли вы сохранить где-то еще. Ну, по крайней мере, что он делает, если вы попытаетесь сохранить его как новый файл, если вы попытаетесь сохранить его как существующий файл, он сработает с ошибкой 75 времени выполнения.
Оба файла просто открываются с помощью "Open filename As # 1" - может ли кто-нибудь дать мне больше информации о том, что заставляет его использовать или не использовать виртуальный магазин в папках, на которые у пользователя нет разрешения на запись?
В качестве альтернативы я попытался запустить приложение в качестве администратора, и он сработает при запуске, - не понял, почему программа будет работать в режиме блокировки, а не как администратор.
Ну, вы сами это поняли: в некоторых местах вы не можете писать без возвышения, другим - совсем не так. В некоторых местах Windows придет на помощь и перенаправит файл в VirtualStore. Среди них:
- Файлы программ и программные файлы (x86) Windows Данные программы
Он считает, что хорошая практика программирования никогда не предполагает, что файловые операции будут работать без ошибок. Вы можете предугадывать ошибки и заранее предупреждать пользователя, и вы должны встраивать любую операцию файла в блок On Error Goto
.
О сбое программы при ее повышении (это действительно решение последней инстанции, постарайтесь избежать этого): Проблема с VirtualStore заключается в том, что вы можете получить две версии файла: тот, который был написан при поднятии, и один написанный, когда не поднят. Когда вы запускаете программу, она неожиданно использует другие файлы, чем раньше, и, следовательно, может проявлять другое поведение, включая сбои. То же самое относится и к разделам реестра.
Больше, чем UAC Virtualization (отличная статья!)
Удачи!