如果是,而且又不想忍受漫长的注销过程,试试看这个 Gina 吧——TNTGina——用于 Terminate MSVC 的 NTGina。
- 缘起:
VC 在调试多线程程序(GraphEdit 调试 DShow Filter 时,基本上都是)的时候经常死机,特别是在 Windows XP 中。
此时按 Ctrl+Alt+Del 有效,但唤出任务管理器后,却无法操作。只好作注销或重启处理:(
- 注册:
保存到系统登录时能访问到的路径上,用 RegSvr32.exe TNTGina.dll 注册它。重新启动系统后才能生效。
(这不是一个COM组件,只不过为了注册和注销方便,导出了两个函数,里面其实只是写了注册表的一个键值,改写了GinaDLL的路径)。
- 注销:
RegSvr32.exe /u TNTGina.dll
- 用法:
注册这个 Gina 后,问题就接解决了——虽然不能从根本上解决问题——不能防止VC死掉——但却可以:
按亮 ScrollLock,然后按 Ctrl+Alt+Del,MSVC 马上被终止掉,系统恢复用户界面响应。重新打开VC调试吧……
- 原理:
这是一个 Gina DLL,Gina 是负责处理系统登录等用户界面操作的DLL,且 MS 允许用户重写它。
于是我写了这个 DLL,处理了 SrcollLock 高亮状态下的 Ctrl+Alt+Del 安全事件,并强制终止 MSVC 进程。
对于其它情况处理,则转交给原来的 MSGina.dll。
- 后话:
这个 DLL 是使用 AheadLib 自动生成的,然后添加了一点操作代码。
- 下载:
TNTGina (包括代码)
但最关键的是无法调试要用到通用串口的程序,或者你知道如何设置vmware使得能够使用通用串口?我反正没找到方法呵呵。
呵呵。也早就发现这其实是个假死,我感觉应该是GUI系统卡住了。却一直没有想起编这样一个程序来辅助结束devenv.exe。谢谢你了。
不知道微软自己怎么想这个问题?我就奇怪怎么这么长时间,一点官方说法都没有??不知道2005里是不是能够修正这个问题了。
我记得当初用VC6时,好像是装了SP4后就好了?不过那是N年前的事了,也可能是我记错了。
根据我的经验,是在断点处不能切换到主界面。
可以点中止调试(Shift F5),大约1分钟会恢复主界面。
不点中止调试好象一直处于假死状态。
不知为什么调方式器会造成整个系统的假死?
另外,这不是COM,只是我道出了两个函数用来注册和注销Gina