我正在尝试在 Windows XP 上调试 C++ 应用程序,当我启动调试模式时,在所有初始化完成后,主窗口不会显示。但是,它适用于 W7。
因此,我检查了该应用程序可用的 msi 安装程序,安装该应用程序后,问题似乎消失了。我卸载了该应用程序,它仍然有效。
我需要知道安装程序修改了哪些注册表项和 DLL,以便识别问题。有没有办法做到这一点?
我正在尝试在 Windows XP 上调试 C++ 应用程序,当我启动调试模式时,在所有初始化完成后,主窗口不会显示。但是,它适用于 W7。
因此,我检查了该应用程序可用的 msi 安装程序,安装该应用程序后,问题似乎消失了。我卸载了该应用程序,它仍然有效。
我需要知道安装程序修改了哪些注册表项和 DLL,以便识别问题。有没有办法做到这一点?
是的。Microsoft 的Process Monitor是免费的,它跟踪程序生成的每个文件 I/O 和注册表读/写,包括安装程序。但是,可能会有很多这样的变化。
因为procmon
通过在进程运行时监控进程来工作,所以您必须再次运行安装程序。
问题解决了。问题是应用程序会尝试获取空对象上的锁,然后失败,然后释放锁。因此,当进行下一次获取时,应用程序会崩溃。奇怪的是,相同的代码在 Windows 7 上也能正常工作,但我猜测 Win API 的锁定部分有一些改进。
Process Monitor会很有用,但安装程序有太多线程和注册表更改无法跟踪。快照会像Process Monitor和诊断日志记录一样复杂。
谢谢你们的帮助,伙计们:)