【发布时间】:2011-05-18 12:19:15
【问题描述】:
我创建了一个应用程序,它使用 CopyFile() API 将文件从硬盘复制到软盘驱动器。 在大文件的复制过程中,如果软盘从驱动器中取出,则 windows 系统弹出错误消息。
我想抑制系统弹出的这个错误信息。我用谷歌搜索并阅读了有关使用的 SetErrorMode() API 由许多应用程序来解决类似的问题,并尝试将它与所有可能的标志选项一起使用,但它失败了。示例代码 -
UINT uOldErrorMode = SetErrorMode (SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX); ::CopyFile("C:\text.dat","A:\text.dat", FALSE); 设置错误模式(uOldErrorMode);
SetErrorMode() API 无法抑制错误消息。谁能帮助我理解为什么它不适用于我的应用程序?
然后我发现了下面的链接:http://support.microsoft.com/kb/128642 讨论了密钥
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\ErrorMode
其值可以设置为 0,1 或 2 以抑制或显示错误消息。此解决方案适用于我的应用程序,但我觉得
一个。直接访问系统密钥不是一个好的编程习惯吗?应该有一个 API 可以做到这一点。 湾。这样的代码在 Windows Vista 或 Windows 7 上执行时会导致 UAC 失败。
任何人都可以就上述问题提供一些帮助。
问候, 费利克斯
【问题讨论】:
标签: visual-c++