Visual c++ 从32位到64位

Visual c++ 从32位到64位,visual-c++,windows-7,32bit-64bit,visual-studio-2003,registrykey,Visual C++,Windows 7,32bit 64bit,Visual Studio 2003,Registrykey,具体内容: VC++7;程序在XP上运行,但在Win7上崩溃;使用VS2003.NET开发(我知道很旧,但这是我必须使用的,它工作正常,非常感谢) 我有一个在XP(32位)上运行良好的程序。然而,我最近用Win7测试了它,各种Choa都崩溃了。我强烈怀疑我的程序是如何处理注册表项的 注意:该程序不创建或销毁键,只查询键并返回感兴趣的值。(“有趣”如下所述) 最简单的形式是,程序从连接SCSI的设备读取数据,并将数据保存到主机PC上的文件中。程序查询注册表中的SCSI适配器,并返回程序用于访问设备

具体内容: VC++7;程序在XP上运行,但在Win7上崩溃;使用VS2003.NET开发(我知道很旧,但这是我必须使用的,它工作正常,非常感谢)

我有一个在XP(32位)上运行良好的程序。然而,我最近用Win7测试了它,各种Choa都崩溃了。我强烈怀疑我的程序是如何处理注册表项的

注意:该程序不创建或销毁键,只查询键并返回感兴趣的值。(“有趣”如下所述)

最简单的形式是,程序从连接SCSI的设备读取数据,并将数据保存到主机PC上的文件中。程序查询注册表中的SCSI适配器,并返回程序用于访问设备的适配器ID

在我看来,注册表结构似乎并没有从XP更改为Win7,但不是100%确定。任何关于这方面的见解都会很好:)

另外,我在上读到:Win7做事情的方式就像一个反射。这是否改变了我查询密钥的方式?如果是这样的话,关于如何构造查询的任何信息都将非常有用

我想我需要知道的是:

  • 它是否像在RegQueryValueEx方法中更改hKey(或lpValueName)一样简单
  • 或者这是否意味着我需要更改RegQueryValueEx方法的其他方面
  • 或者完全是别的什么

提前谢谢你

首先在您自己的机器上通过运行应用程序是值得的。特别令人感兴趣的是
LuaPriv
部分,该部分将突出显示应用程序执行的操作在Vista或Win-7中效果不佳的实例。这将抓住任何您可能咨询与XP中不同的注册表位置的时间


需要注意的一点是,如果您正在读取由另一个应用程序创建的注册表项,那么它们可能位于不同的位置,例如在32位或64位视图中,或者虚拟化到每个用户的位置(如果进程运行时认为它可以在任何地方写入,但没有管理员权限,则通常会发生这种情况,因此Windows会将注册表写入虚拟化区域进行沙箱处理)。

您没有比“它崩溃”更详细的信息吗?您应该能够(至少在Win7设备上进行调试)为了更好地了解它在何处以及如何表现出不同的行为。特别是哪些API调用失败。啊。我已经放弃了这一部分…到目前为止,我只允许在Windows 7 box上进行测试…>:|这是我进退两难的一部分,但我正在努力获得开发人员的特权。繁文缛节般的叹息,我没有真正的调试特权…这是由于我们的管理员处理事情,我无法在机器上运行调试构建,对吗?至于“崩溃”当用户单击程序中的SCSI设备时,windows会抱怨发生了错误,并想知道我是否要报告它…哈哈,如果我真的能让它报告给我就好了!哈哈。总之…程序只是关闭了…我通常必须先登录,然后再重新打开程序…也许可以看看这个:@rene I like that-MiniDumpWriteDump方法看起来是一个非常有用的工具。谢谢。不过我仍在寻找有关注册表的更多信息。