在不需要它的应用程序中“驱动器中没有磁盘”

时间:2008-11-04 08:40:27

标签: windows

我们的应用程序是用C ++编写的,并在Windows XP上使用。在某些只有C:驱动器的客户端计算机上,应用程序启动时会弹出错误:

驱动器中没有磁盘。请将磁盘插入驱动器“D”

如果他们点击“继续”或插入一张CD(即使是空的!)并按“再试一次”,一切正常。

Someone suggested这可能与驱动器D上的编译有关:(我们的构建机器使用驱动器D:进行编译)。有没有人遇到过这个问题?

5 个答案:

答案 0 :(得分:5)

找出尝试访问D驱动器并修复它的确是个好主意。但是,如果需要,可以使用SEM_FAILCRITICALERRORS标志调用SetErrorMode来抑制此行为。它甚至可以帮助您识别问题,因为错误将直接发送到应用程序,而不是通过系统对话框处理。

答案 1 :(得分:3)

尝试在C:上编译它,看看错误是否仍然存在。您可以使用www.syinternals.com中的 Process Monitor 来查看程序尝试访问的文件/目录。希望这有帮助!

答案 2 :(得分:3)

这可能是旧闻,但我刚刚收到同样的错误,试图运行Delphi 2010.事实证明,当我拔掉我的手机时,我正在充电,错误就消失了。

由于我一直在这台电脑上给手机充电,我想知道为什么突然发生这种情况。这次有一点不同的是,当我重新启动计算机以安装一些更新时,我的手机已经插上电源。

拔下手机后(重新启动后)错误消失了,我将手机重新插上电源,没有发生任何事故。

希望这有助于某人。

答案 3 :(得分:2)

尝试通过Dependency Walker运行程序,看看在二进制文件的依赖项中是否有对D:的引用。这可能会提示您哪个库(如果有)存在问题。或者它可能什么都不给你,但它是免费的,而且很快就可以做到,所以我推荐它。

答案 4 :(得分:0)

哦,是的,我们曾经有过这样的错误......不幸的是,我不能告诉你这是什么修复,但这是完全愚蠢的事情,我记得很多。我仍然可以在我们的CDebugStackWalk类中找到注释,因此它可能与堆栈展开有关...某处,不知怎的......