У меня есть приложение VB6, которое все еще ссылается на некоторые старые библиотеки VB5 (dll, vbr, tlb и ocx). У нас возникают некоторые странные проблемы, например, он не может прочитать реестр с помощью advapi32.dll. Я пробовал запустить приложение с разрешениями UAC, но все равно ничего не вышло. Мы не можем перекомпилировать приложение, потому что в нем есть несколько элементов управления и компонентов, которые нельзя найти для загрузки и которые больше не поддерживаются. Любые идеи (кроме переписывания, поскольку мы уже работаем над этим) приветствуются.
К тому же, мы уже пробовали это приложение в режиме Windows XP. Однако вот мои "претензии" к этому:
- Windows, загруженные как vbFormCenter и vbModal, центрируются между двумя мониторами. Даже после перетаскивания на один из мониторов он не запоминает, где должно быть модальное окно.
- При попытке печати произвольно распечатывается задание до 5 минут. Это потому, что (или, по крайней мере, я думаю, что это причина) машина XP Mode также загружает принтеры с хоста.
- Некоторая связь DCOM кажется вялой случайным образом
- Принтер, подключенный через USB, может быть только на хосте или виртуальной машине, но не на обоих, потому что он использует сквозную передачу. Даже в этом случае вы не можете «заставить» приложение разрешить подключенный принтер.
- Старые приложения (VB5 и VB6) не всегда закрываются при вызове Application.Exit. Не уверен, почему это так, но вы можете открыть форму и вызвать подпрограмму «Выход» при нажатии кнопки и из 25 раз, в 10-20% случаев она не закрывается. Таким образом, нет способа показать приложение как подпроцесс на хост-машине, чтобы его можно было убить.
Уф. Это всего несколько.