Приложение VB6 для Windows 7 сохраняет только виртуальный магазин

64
7

Я отвечаю за поддержку приложения VB6, и я столкнулся с нечетным поведением в Windows 7.

Когда приложение установлено в файл программы (x86) (или я предполагаю, что в какой-либо директории нет разрешений на запись), большую часть времени, когда он идет для сохранения файла локально, он попадает в это странное место виртуального магазина, Это приемлемо. Но иногда он попытается сохранить локально и дать сообщение о том, что вам не разрешено сохранять здесь и спрашивать, хотите ли вы сохранить где-то еще. Ну, по крайней мере, что он делает, если вы попытаетесь сохранить его как новый файл, если вы попытаетесь сохранить его как существующий файл, он сработает с ошибкой 75 времени выполнения.

Оба файла просто открываются с помощью "Open filename As # 1" - может ли кто-нибудь дать мне больше информации о том, что заставляет его использовать или не использовать виртуальный магазин в папках, на которые у пользователя нет разрешения на запись?

В качестве альтернативы я попытался запустить приложение в качестве администратора, и он сработает при запуске, - не понял, почему программа будет работать в режиме блокировки, а не как администратор.

спросил(а) 2021-01-19T16:45:46+03:00 6 месяцев назад
1
Решение
63

Ну, вы сами это поняли: в некоторых местах вы не можете писать без возвышения, другим - совсем не так. В некоторых местах Windows придет на помощь и перенаправит файл в VirtualStore. Среди них:

    Файлы программ и программные файлы (x86) Windows Данные программы

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

О сбое программы при ее повышении (это действительно решение последней инстанции, постарайтесь избежать этого): Проблема с VirtualStore заключается в том, что вы можете получить две версии файла: тот, который был написан при поднятии, и один написанный, когда не поднят. Когда вы запускаете программу, она неожиданно использует другие файлы, чем раньше, и, следовательно, может проявлять другое поведение, включая сбои. То же самое относится и к разделам реестра.

Больше, чем UAC Virtualization (отличная статья!)

Удачи!

ответил(а) 2021-01-19T16:45:46+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема