【问题标题】:Pitfalls of Windows Compatibility ModeWindows 兼容模式的陷阱
【发布时间】:2014-04-11 19:03:08
【问题描述】:

我们有一个 VB6 应用程序,正在从 Windows XP 迁移到 Windows 7 的过程中,我们遇到了几个问题。如果我们将应用程序的兼容模式设置为 Windows XP (Service Pack 3),其中一些问题就会消失。

我想知道简单地在兼容模式下运行我们的应用程序是否是一个好的解决方案。我一直在做一些谷歌搜索,但没有发现任何暗示使用兼容模式有不利之处。但大多数人将它用于他们未开发的应用程序。

长期目标是用 C# 替换所有 VB6 代码,但这需要时间。也许在我们替换VB6的同时使用兼容模式并不是一件坏事。

有没有人有过开发应用程序并有意让它在兼容模式下运行的经验?我的直觉说这是个坏主意,但我找不到任何反对使用它的证据。

【问题讨论】:

  • 这样做的目的是让编写了一些不正确假设的代码继续运行。即使用 C# 重写,您也必须纠正这些假设,而这样做需要您弄清楚它们是什么,在代码中的位置等。换句话说,正确编写的 VB6 代码也不需要任何这些 appcompat 垫片。

标签: windows-7 vb6 legacy compatibility-mode


【解决方案1】:

有消费者应用程序(非常糟糕的兼容模式)和业务线应用程序 - 你可以做你需要做的事情。你控制环境。

这些是 WinXPSP2 所做的特定事情(我在 Vista 上没有 SP3 选项)。

DirectXVersionLie
ElevateCreateProcess
EmulateSorting
EnableLegacyExceptionHandlinginOLE
FailObsoleteShellAPIs
GlobalMemoryStatus2GB
HandleBadPtr
HardwareAudioMixer
LoadLibraryCWD
NoGhost
RedirectMP3Codec
VirtualRegistry
WinXPSP2VersionLie

一个很好的猜测是您的应用程序需要运行提升(上面列表中的#2)。

顺便说一句,如果启动一个进程,它会正常启动它,如果(执行它的最终函数)createprocess 失败并出现 ElevationRequired 它会重新启动它提升。

【讨论】:

    【解决方案2】:

    我有一个旧的 vb6 应用程序,我最近不得不在 win7 64 位上工作。以 xp 模式运行是解决方案的一部分。我在使用旧安装程序时遇到了其他问题,需要使用提升的命令提示符对 windows\sysWOW64\ 运行 regsvr32.exe。我需要以管理员身份登录才能安装,因为以管理员身份运行安装程序不起作用。花了 45 分钟左右的时间注册组件,但最终还是很好。 希望有帮助。 干杯 戴夫

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多