具体内容: VC++ 7;程序在XP上运行,但在Win7上崩溃;开发使用VS2003.NET(老我知道,但这是我的工作很好,非常感谢你)从32位到64位
我有一个在XP(32位)上运行良好的程序。不过,我最近用Win7测试过它,各种各样的choas都被打破了。我强烈的怀疑是我的程序如何处理注册表项。
注意:程序不会创建或销毁密钥,只会查询密钥并返回有趣的值。 (下面描述的“有趣”)
最简单的形式,程序从SCSI连接的设备读取数据,并将数据保存到主机PC上的文件中。程序向注册表查询SCSI适配器并返回程序用来访问设备的适配器ID。
对我来说,它看起来并不像注册表结构从XP更改为Win7,但不是100%确定。任何洞察力,将是伟大的:)
此外,我在阅读:http://www.techsupportalert.com/content/how-windows7-vista64-support-32bit-applications.htm Win7的方式做事情就像一个反射。这是否会改变我应该如何查询密钥?如果是这样,关于如何构建查询的任何信息将是很好的。
我想我需要知道的是:
- 是化繁为简的方法的RegQueryValueEx改变的hKey(或lpValueName)?
- 或者这是否意味着我需要更改RegQueryValueEx方法的其他方面?
- 还是别的什么?
预先感谢您!
难道你没有更多的信息,然后'它崩溃'?你应该能够(至少在Win7盒子上有一个调试版本)来更好地了解它在哪里以及如何表现不同。特别指出哪些API调用失败。 – rene 2012-08-06 18:04:16
啊。我已经离开了那部分....截至目前,我只允许在Windows 7盒子上进行测试....>:|我的困境的一部分,但我正在努力让开发者对其进行私有化。红色磁带*叹息*因此,我没有真正的调试功能......并且由于我们的管理员如何处理事情,我无法在机器上运行调试版本 - 呵呵? – redhotspike 2012-08-06 18:06:38
至于用户在程序中点击SCSI设备时的“崩溃”,windows会抱怨发生了错误,并想知道我是否想要报告它......大声笑,如果我真的可以真正将它报告给我!大声笑。无论如何...该方案只是关闭。 ...我通常必须记录然后重新打开程序... – redhotspike 2012-08-06 18:09:32