让VB6应用程序在Windows 7中工作(如果可以的话)';t重新编译

让VB6应用程序在Windows 7中工作(如果可以的话)';t重新编译,vb6,windows-7,registry,uac,Vb6,Windows 7,Registry,Uac,我有一个VB6应用程序,它仍然引用一些旧的VB5库(dll、vbr、tlb和ocx)。我们遇到了一些奇怪的问题,例如无法使用advapi32.dll读取注册表。我已尝试使用UAC权限运行该应用程序,但仍然无法运行。我们无法重新编译该应用程序,因为它有多个无法下载的控件和组件,并且不再受支持。任何想法(除了重写,因为我们已经在工作)都将受到赞赏 另外,我们已经在Windows XP模式下尝试了此应用程序。然而,以下是我对此的“抱怨”: 加载为vbFormCenter和vbModal的窗口在两个监

我有一个VB6应用程序,它仍然引用一些旧的VB5库(dll、vbr、tlb和ocx)。我们遇到了一些奇怪的问题,例如无法使用advapi32.dll读取注册表。我已尝试使用UAC权限运行该应用程序,但仍然无法运行。我们无法重新编译该应用程序,因为它有多个无法下载的控件和组件,并且不再受支持。任何想法(除了重写,因为我们已经在工作)都将受到赞赏

另外,我们已经在Windows XP模式下尝试了此应用程序。然而,以下是我对此的“抱怨”:

  • 加载为vbFormCenter和vbModal的窗口在两个监视器之间居中。即使将它拖到一个监视器上,它也不记得模态应该在哪里
  • 当尝试随机打印时,一个作业最多需要5分钟才能吐出来。这是因为(或者至少我认为这是原因)XP模式机器也从主机加载打印机
  • 某些DCOM通信似乎随机地缓慢
  • 通过USB连接的打印机只能位于主机或虚拟机上,而不能同时位于主机或虚拟机上,因为它使用直通。即使如此,您也不能“强制”应用程序连接打印机
  • 调用Application.Exit时,较旧的应用程序(VB5和VB6)并不总是关闭。不知道为什么会这样,但是你可以打开一个表单,当一个按钮被点击25次后调用Exit sub,有10-20%的时间它没有关闭。因此,没有办法将应用程序显示为主机上的子进程,这样就可以终止它

呸。这只是几个问题。

这可能是一个愚蠢的问题,但您是否尝试过在兼容模式下运行它?

您可以尝试使用windows XP虚拟机…假设它不需要直接在主机上运行。

windows 7不支持VB 5.0,尽管VB 6.0支持,所以我猜这是您的问题

解决这个问题的方法是运行一个WindowsXP虚拟机,Windows7使用xp模式运行这个虚拟机的过程非常简单

退房


XP虚拟机的另一种替代方案有一些优点,就是。它便宜、健壮,并且提供了一种整洁的透明模式,使得在VM中运行的程序看起来像是在桌面上运行的本机程序。自从我的Windows 7计算机问世以来,我一直在使用Parallels来运行几个XP台式机来开发遗留客户端软件,而且效果很好。

尝试过,但效果不太好。所有的窗口都在屏幕中部加载,当它试图打印(因为它从主机加载打印机等)时,它挂起长达5分钟。此外,如果您有本地打印机设置,则无法强制将其连接,即使可以,主机也无法使用它。因此,我认为,鉴于window7不支持VB5,您实际上只有两个选项,找到一种方法使虚拟机按需工作,或者回滚到windows xp,直到重新写入完成。很抱歉成为坏消息的传递者,祝你好运!很好的建议,但我不想买任何东西。不是虚拟PC…试试virtualbox。。。创建虚拟机后(关闭虚拟机电源),转到VirtualBox控制台中的“详细信息”选项卡。点击“USB控制器”链接。在弹出窗口中,选中“USB设备”复选框并右键单击USB“plus”图标。选择打印机。如果打印机没有显示,则在为来宾通电时,您可能没有连接并打开打印机。在那之后,你应该可以通过VirtualBoxy使用打印机如果你真的可以重新编译这个程序的话,情况会好得多。这听起来还需要一个清单文件。我建议在尝试读取注册表时查找找不到的特定控件和组件的名称以及特定的错误消息。Thn分组询问。google.ca/group/…你可能会在该新闻组中得到很多有用的答案。