具体细节: VC ++ 7;程序适用于XP,但在Win7上崩溃;使用VS2003.NET开发(旧的我知道,但这是我必须使用的,它工作得很好,非常感谢你)
我有一个在XP(32位)上运行良好的程序。但是,我最近用Win7对它进行了测试,各种各样的选择都松了一口气。我强烈怀疑我的程序如何处理注册表项。
注意:程序不会创建或销毁密钥,只会查询密钥并返回有趣的值。 (“有趣的”描述如下)
在最简单的形式中,程序从SCSI连接设备读取数据,并将数据保存到主机PC上的文件中。该程序在注册表中查询SCSI适配器并返回程序用来访问设备的适配器ID。
对我来说,看起来注册表结构从XP改为Win7并不是100%肯定。任何有关这方面的见解都会很棒:)
另外,我读到:http://www.techsupportalert.com/content/how-windows7-vista64-support-32bit-applications.htm,Win7做事情的方式就像一个反思。这会改变我查询密钥的方式吗?如果是这样,任何有关如何构建查询的信息都会很棒。
我认为我需要知道的是:
提前谢谢!
答案 0 :(得分:0)
值得首先通过您自己机器上的Application Verifier运行您的应用程序。特别感兴趣的是LuaPriv
部分,它将突出显示您的应用程序正在执行在Vista或Win-7中无法正常运行的操作的实例。这可能会在您可能正在咨询与XP不同的注册表位置的任何时候捕获。
要注意的一件事是,如果您正在读取由另一个应用程序创建的注册表项,那么它们可能位于不同的位置,例如在32位或64位视图中,或者虚拟化为每个 - 用户位置(如果进程认为它可以在任何地方写入,但没有管理员权限,则通常会发生这种情况,因此Windows会将注册表写入沙箱到虚拟区域中。)