程序关不了机,Win7下可以,XP都不行

蔡袅 2013-07-26 03:49:21
各种关机代码都试了:
1,
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case 0x0011://WM_QUERYENDSESSION
bExitApp = true;
m.Result = (IntPtr)1;
break;
default:
base.WndProc(ref m);
break;
}
}
private void FrmMsgMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (bExitApp)
{
e.Cancel = false;
this.Close();
}
else
{
e.Cancel = true;
this.Hide();
}
}

2,监控系统关机在处理也没用
SystemEvents.SessionEnding += new SessionEndingEventHandler(SystemEvents_SessionEnding);
...全文
482 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
蔡袅 2013-07-30
  • 打赏
  • 举报
回复
现在关机的时候可以退出我的程序了,可是每次要关机两次操作才能完全关成功,是什么原因? 代码如下:
        const int WM_ENDSESSION = 0x0016;
        const int WM_QUERYENDSESSION = 0x0011;
        /// <summary>
        /// 询问是否关机(false否关机,true是关机)
        /// </summary>
        bool bQueryExitApp = false;
        #region 关机代码
        /// <summary>
        /// 操作系统关闭时,关闭应用程序
        /// </summary>
        /// <param name="m">截获系统消息</param>
        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case WM_QUERYENDSESSION://WM_QUERYENDSESSION
                    bQueryExitApp = true;
                    break;
                case WM_ENDSESSION://WM_ENDSESSION 系统指示:关掉
                    {
                        bQueryExitApp = true;
                        this.notifyJasic.Visible = false;
                        this.notifyJasic.Dispose();
                        this.tmRefreshDBSX.Enabled = false;
                        this.tmRefreshDBSX.Dispose();
                        KillSendImageThread();
                        KillRefreshThread();
                        CloseAllOpenForm();
                        try
                        {
                            this.Close();
                        }
                        catch (Exception ex)
                        {
                            Environment.Exit(-1);
                        }
                        Application.Exit();
                    }
                    break;
                default:
                    break;
            }
            base.WndProc(ref m);
        }

        private void FrmMsgMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!bQueryExitApp)
            {
                e.Cancel = true;
                this.Hide();
            }
        }
ericyeon 2013-07-29
  • 打赏
  • 举报
回复
用管理员身份运行
走你_ 2013-07-28
  • 打赏
  • 举报
回复
引用 28 楼 u010202504 的回复:
[quote=引用 25 楼 beyond789654 的回复:] [quote=引用 11 楼 u010202504 的回复:] 楼主 加了线程或者timer控件之类的或者重新定义了启动窗体的closing事件吧? 正好最近我也遇到过类似问题,XP系统的内存回收机制太烂才会导致这样的情况发生,什么调用API捕获关机信息之类的办法我都试完了,没戏。 我的解决方法: 1:把启动窗体留空,什么都不敢,确保不会定义到closing事件(就是让closing事件干它默认该干的事,就是this.Disposed() 2:在启动窗体的closing事件里加上停止线程或者停止timer控件计时的代码,最后也别忘了加上this.Disposed() 可能比较业余,但是确实解决了。希望能帮到你。
三余[/quote] 佛剑大师 话说在这里认道友不太合适吧…[/quote]有啥不合适的 ,黄色论坛里我都认啊
  • 打赏
  • 举报
回复
引用 25 楼 beyond789654 的回复:
[quote=引用 11 楼 u010202504 的回复:] 楼主 加了线程或者timer控件之类的或者重新定义了启动窗体的closing事件吧? 正好最近我也遇到过类似问题,XP系统的内存回收机制太烂才会导致这样的情况发生,什么调用API捕获关机信息之类的办法我都试完了,没戏。 我的解决方法: 1:把启动窗体留空,什么都不敢,确保不会定义到closing事件(就是让closing事件干它默认该干的事,就是this.Disposed() 2:在启动窗体的closing事件里加上停止线程或者停止timer控件计时的代码,最后也别忘了加上this.Disposed() 可能比较业余,但是确实解决了。希望能帮到你。
三余[/quote] 佛剑大师 话说在这里认道友不太合适吧…
yanghailun_ 2013-07-27
  • 打赏
  • 举报
回复
首先,你自己的程序需要是管理员身份运行(win7 下必需管理员身份运行)... 然后试试: 1 System.Diagnostics.Process.Start("a.bat"); // 调用 a.bat 文件, a.bat 中如下内容 shutdown.exe -s -t 10 [color=#000000]或shutdown -s -t 10 -c[/color] 2 另外.... 你可以杀掉系统进程(用NTSD)...自然就关机了...仅实验和测试用用... 参考 http://zhidao.baidu.com/question/125165811.html
qldsrx 2013-07-27
  • 打赏
  • 举报
回复
引用 18 楼 xx_mm 的回复:
这是我第一个版本就这么写了,没用,不知道什么阻止了关机,一个不该花时间解决的问题,成了每个版本都得去解决的问题
你试试在那个条件判断里面写下log日志,看看条件判断是否正确,如果正确,后面就没有任何阻止关机的代码存在了,还会阻止关机,说明是其它地方的问题。
走你_ 2013-07-27
  • 打赏
  • 举报
回复
引用 11 楼 u010202504 的回复:
楼主 加了线程或者timer控件之类的或者重新定义了启动窗体的closing事件吧? 正好最近我也遇到过类似问题,XP系统的内存回收机制太烂才会导致这样的情况发生,什么调用API捕获关机信息之类的办法我都试完了,没戏。 我的解决方法: 1:把启动窗体留空,什么都不敢,确保不会定义到closing事件(就是让closing事件干它默认该干的事,就是this.Disposed() 2:在启动窗体的closing事件里加上停止线程或者停止timer控件计时的代码,最后也别忘了加上this.Disposed() 可能比较业余,但是确实解决了。希望能帮到你。
三余
  • 打赏
  • 举报
回复
如果有软件阻止关机有软件硬要关机不知道听谁的了 2013年07月27日→星座:狮子座 二〇一三年六月二十 癸巳〖蛇〗己未月甲午日己巳时 今属:木;五行:水火土木;缺:金。 纳音五行:长流水。
hubro 2013-07-27
  • 打赏
  • 举报
回复
引用 9 楼 xx_mm 的回复:
引用 5 楼 u011096386 的回复:
[quote=引用 4 楼 xx_mm 的回复:] [quote=引用 3 楼 xx_mm 的回复:] 杯具了,说错了,是程序阻止了电脑关机,怎么关都不行
找了很多原因就是管不了。。
什么程序阻止关机? 你的程序[/quote]一个通讯软件,基于TCP的[/quote] 你需要把线程在窗体关闭事件里停掉

protected override void WndProc(ref Message m)
        {
                switch (m.Msg)
                {
                    case 0x0011://WM_QUERYENDSESSION
                        bExitApp = true;
                        //在这里加上销毁线程的代码
                        m.Result = (IntPtr)1;
                        break;
                    default:
                        base.WndProc(ref m);
                        break;
                }
        }
原理同这个贴子 http://bbs.csdn.net/topics/390529220
  • 打赏
  • 举报
回复
引用 15 楼 xx_mm 的回复:
[quote=引用 13 楼 u010202504 的回复:] [quote=引用 12 楼 xx_mm 的回复:] 程序发布了16个版本了,一直没解决这个问题。只要我把我们的程序退出了,才能关机
我也是试了很多次,这种原因 第一:主要是要利用timer或者线程来循环检查版本或者任务计划时间之类的,然后程序运行过程中又不可能关掉线程或者停止timer计时,就会导致XP系统无法回收释放线程占用的内存,导致关机不能。 第二:启动窗体的closing事件被重新定义,就是托盘程序,一般我们都希望启动窗体又能启动托盘程序,也能在上面加空间实现某些功能,这样就需要把closing事件定义掉,这样也会造成关机不能。[/quote]你说的第一点是不是关机时将Timer禁用掉,同时释放掉,第二点 什么是Closing事件被重新定义?[/quote] 对,第一点就是关机时无法释放循环中的线程和timer资源导致无法关机,需要再窗体Closing事件中加上释放资源的语句。例如timer.Stop() 第二个,窗体的Closing事件默认是执行窗体的资源释放任务,就是窗体的this.Diposed(),如果为了让点击窗体关闭按钮而不关闭窗体就重新把Closing事件定义成只执行窗体的this.Hide(),就会导致关机时窗体无法执行this.Diposed(),也就无法释放窗体资源,当然就关闭不了系统了。所以尽量不要重新定义程序启动窗体的Closing事件,不过目前我只发现在XP下会出现这种屎一样的bug。 另外,由于XP系统的尿性,所以不光是上面说到的两种情况,尽量在代码中实现窗体,线程,网络ping,数据库连接等类似对象的自我释放资源,否则很难保证会不会有哪个对象资源释放不了导致关闭不了系统。
倒退一天 2013-07-27
  • 打赏
  • 举报
回复
我滴神,你自己做的程序,可疑的地方你都排查不出来?至少你得说出自己认为几个可疑的地方,别人才好帮你分析呀,就这么一两介绍,估计只有神才能帮你了.
蔡袅 2013-07-26
  • 打赏
  • 举报
回复
引用 17 楼 qldsrx 的回复:
if (e.CloseReason == CloseReason.UserClosing)
{
    e.Cancel = true;
    this.Hide();
    return;
}
这段代码我在XP、WIN2003、WIN7都试过,没任何问题,你说的CloseReason.WindowsShutDown我没去试,但是这里只需要判断是CloseReason.UserClosing才需要隐藏,其它各种理由都可以直接关闭。
这是我第一个版本就这么写了,没用,不知道什么阻止了关机,一个不该花时间解决的问题,成了每个版本都得去解决的问题
qldsrx 2013-07-26
  • 打赏
  • 举报
回复
if (e.CloseReason == CloseReason.UserClosing)
{
    e.Cancel = true;
    this.Hide();
    return;
}
这段代码我在XP、WIN2003、WIN7都试过,没任何问题,你说的CloseReason.WindowsShutDown我没去试,但是这里只需要判断是CloseReason.UserClosing才需要隐藏,其它各种理由都可以直接关闭。
蔡袅 2013-07-26
  • 打赏
  • 举报
回复
引用 14 楼 dongxinxi 的回复:
switch (m.Msg) { case 0x0011://WM_QUERYENDSESSION bExitApp = true; m.Result = (IntPtr)1; Environment.Exit(1); //强退或者Application.ExitThread();
这个代码试了,没一点用
蔡袅 2013-07-26
  • 打赏
  • 举报
回复
引用 13 楼 u010202504 的回复:
[quote=引用 12 楼 xx_mm 的回复:] 程序发布了16个版本了,一直没解决这个问题。只要我把我们的程序退出了,才能关机
我也是试了很多次,这种原因 第一:主要是要利用timer或者线程来循环检查版本或者任务计划时间之类的,然后程序运行过程中又不可能关掉线程或者停止timer计时,就会导致XP系统无法回收释放线程占用的内存,导致关机不能。 第二:启动窗体的closing事件被重新定义,就是托盘程序,一般我们都希望启动窗体又能启动托盘程序,也能在上面加空间实现某些功能,这样就需要把closing事件定义掉,这样也会造成关机不能。[/quote]你说的第一点是不是关机时将Timer禁用掉,同时释放掉,第二点 什么是Closing事件被重新定义?
  • 打赏
  • 举报
回复
switch (m.Msg) { case 0x0011://WM_QUERYENDSESSION bExitApp = true; m.Result = (IntPtr)1; Environment.Exit(1); //强退或者Application.ExitThread();
  • 打赏
  • 举报
回复
引用 12 楼 xx_mm 的回复:
程序发布了16个版本了,一直没解决这个问题。只要我把我们的程序退出了,才能关机
我也是试了很多次,这种原因 第一:主要是要利用timer或者线程来循环检查版本或者任务计划时间之类的,然后程序运行过程中又不可能关掉线程或者停止timer计时,就会导致XP系统无法回收释放线程占用的内存,导致关机不能。 第二:启动窗体的closing事件被重新定义,就是托盘程序,一般我们都希望启动窗体又能启动托盘程序,也能在上面加空间实现某些功能,这样就需要把closing事件定义掉,这样也会造成关机不能。
蔡袅 2013-07-26
  • 打赏
  • 举报
回复
程序发布了16个版本了,一直没解决这个问题。只要我把我们的程序退出了,才能关机
  • 打赏
  • 举报
回复
楼主 加了线程或者timer控件之类的或者重新定义了启动窗体的closing事件吧? 正好最近我也遇到过类似问题,XP系统的内存回收机制太烂才会导致这样的情况发生,什么调用API捕获关机信息之类的办法我都试完了,没戏。 我的解决方法: 1:把启动窗体留空,什么都不敢,确保不会定义到closing事件(就是让closing事件干它默认该干的事,就是this.Disposed() 2:在启动窗体的closing事件里加上停止线程或者停止timer控件计时的代码,最后也别忘了加上this.Disposed() 可能比较业余,但是确实解决了。希望能帮到你。
蔡袅 2013-07-26
  • 打赏
  • 举报
回复
引用 6 楼 dongxinxi 的回复:
如果你是想除关机之外,取消用户关闭的行为,你可以试试

        private void FrmMsgMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.Visible = false;
            if (e.CloseReason != CloseReason.WindowsShutDown)
            {
                e.Cancel = true;
            }
        }
只需这几代码就行,对于其他几种情况,你可以看一下CloseReason
之前写过,判断CloseReson试了一点用都没有,就是程序不退出
加载更多回复(9)
DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。程序主要针对0xc000007b问题设计,可以完美修复该问题。本程序中包含了最新版的DirectX redist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。 本程序为了应对一般电脑用户的使用,采用了傻瓜式一键设计,只要点击主界面上的“检测并修复”按钮,程序就会自动完成校验、检测、下载、修复以及注册的全部功能,无需用户的介入,大大降低了使用难度。 本程序适用于多个操作系统,如Windows XP(需先安装.NET 2.0,详情请参阅“致Windows XP用户.txt”文件)、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 8.1 Update、Windows 10,同时兼容32位操作系统和64位操作系统。本程序会根据系统的不同,自动调整任务模式,无需用户进行设置。 本程序的V3.3版分为标准版、增强版以及在线修复版。其中的标准版以及增强版都包含完整的DirectX组件。除此之外,增强版中还额外包含了c++ Redistributable Package,因此增强版不但能解决DirectX组件的问题,而且还能解决c++组件异常产生的问题。增强版适合无法自行解决c++相关问题的用户使用。在线修复版的功能与标准版相同,只是其所需的文件将通过Internet下载,因此大大减小了程序的体积。本程序的各个版本之间,主程序完全相同,只是配套使用的数据包不同。因此,当您使用标准版数据包时,程序将进行标准修复;当您使用增强版的数据包时,程序将进行增强修复;当数据包不全或没有数据包(即只有DirectX Repair.exe程序)时,程序将进行在线修复。在线修复、离线修复可自由灵活组合,充分满足不同用户的需要。 本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。新程序更改了自我校验方式,因此使用新版本的程序时不会再出现自我校验失败的错误;但并非取消自我校验,因此程序安全性与之前版本相同,并未降低。 程序有自动更新c++功能。由于绝大多数软件运行时需要c++的支持,并且c++的异常也会导致0xc000007b错误,因此程序在检测修复的同时,也会根据需要更新系统中的c++组件。自V3.2版本开始使用了全新的c++扩展包,可以大幅提高工业软件修复成功的概率。修复c++的功能仅限于增强版,标准版及在线修复版在系统c++异常时(非丢失时)会提示用户使用增强版进行修复。 程序有两种窗口样式。正常模式即默认样式,适合绝大多数用户使用。另有一种简约模式,此时窗口将只显示最基本的内容,修复会自动进行,修复完成10秒钟后会自动退出。该窗口样式可以使修复工作变得更加简单快速,同时方便其他软件、游戏将本程序内嵌,即可进行无需人工参与的快速修复。开启简约模式的方法是:打开程序所在目录下的“Settings.ini”文件(如果没有可以自己创建),将其中的“FormStyle”一项的值改为“Simple”并保存即可。 程序有高级筛选功能,开启该功能后用户可以自主选择要修复的文件,避免了其他不必要的修复工作。同时,也支持通过文件进行辅助筛选,只要在程序目录下建立“Filter.dat”文件,其中的每一行写一个需要修复文件的序号即可。该功能仅针对高级用户使用,并且必须在正常窗口模式下才有效(简约模式时无效)。 本程序有自动记录日志功能,可以记录每一次检测修复结果,方便在出现问题时,及时分析和查找原因,以便找到解决办法。 程序的“选项”对话框中包含了4项高级功能。点击其中的“注册系统文件夹中所有dll文件”按钮可以自动注册系统文件夹下的所有dll文件。该项功能不仅能修复DirectX的问题,还可以修复系统中很多其他由于dll未注册而产生的问题,颇为实用。点击该按钮旁边的小箭头,还可以注册任意指定文件夹下的dll文件,方便用户对绿色版、硬盘版的程序组件进行注册。点击第二个按钮可以为dll文件的右键菜单添加“注册”和“卸载”项,方便对单独的dll文件进行注册。请注意,并不是所有的dll文件都可以通过这种方式注册。点击“DirectX版本”选项卡可以自行修改系统中DirectX的版本信息。点击“DirectX加速”选项卡可以控制系统中DirectX加速的开启与关闭。 新版程序集成了用户反馈程序,可以在用户允许的前提下发送检测修复结果。用户也可以在出现问题时通过反馈程序和软件作者进行交流,共同查找问题。反馈是完全自愿和匿名(如果不填写E-mail地址)的。 本程序的通用版基于Microsoft .NET Framework 2.0开发,对于Windows 2000、Windows XPWindows 2003的用户需要首先安装.NET Framework 2.0或更高版本方可运行本程序。有关下载和安装的详细信息请参阅“致Windows XP用户.txt”文件。对于Windows Vista、Windows 7及后续用户,可以直接运行本程序。 同时鉴于Windows 8(Windows 8.1、Windows 8.1 Update)、Windows 10系统中默认未包含.NET Framework 2.0,因此新版的程序文件夹内将包含一个DirectX_Repair_win8的特别版程序,该程序功能与通用版相同,基于.NET Framework 4.0开发,可以在Windows8(Windows 8.1、Windows 8.1 Update)、Windows 10系统中直接运行(其他系统如果安装了.NET Framework 4.0也可以运行这个特别版的程序)。 本程序的官方博客地址为:http://blog.csdn.net/vbcom/article/details/6962388 所有的更新以及技术支持都可以到该博客上找到。
DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。程序主要针对0xc000007b问题设计,可以完美修复该问题。本程序中包含了最新版的DirectX redist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。 本程序为了应对一般电脑用户的使用,采用了傻瓜式一键设计,只要点击主界面上的“检测并修复”按钮,程序就会自动完成校验、检测、下载、修复以及注册的全部功能,无需用户的介入,大大降低了使用难度。 本程序适用于多个操作系统,如Windows XP(需先安装.NET 2.0,详情请参阅“致Windows XP用户.txt”文件)、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 8.1 Update、Windows 10,同时兼容32位操作系统和64位操作系统。本程序会根据系统的不同,自动调整任务模式,无需用户进行设置。 本程序的V3.3版分为标准版、增强版以及在线修复版。其中的标准版以及增强版都包含完整的DirectX组件。除此之外,增强版中还额外包含了c++ Redistributable Package,因此增强版不但能解决DirectX组件的问题,而且还能解决c++组件异常产生的问题。增强版适合无法自行解决c++相关问题的用户使用。在线修复版的功能与标准版相同,只是其所需的文件将通过Internet下载,因此大大减小了程序的体积。本程序的各个版本之间,主程序完全相同,只是配套使用的数据包不同。因此,当您使用标准版数据包时,程序将进行标准修复;当您使用增强版的数据包时,程序将进行增强修复;当数据包不全或没有数据包(即只有DirectX Repair.exe程序)时,程序将进行在线修复。在线修复、离线修复可自由灵活组合,充分满足不同用户的需要。 本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。新程序更改了自我校验方式,因此使用新版本的程序时不会再出现自我校验失败的错误;但并非取消自我校验,因此程序安全性与之前版本相同,并未降低。 程序有自动更新c++功能。由于绝大多数软件运行时需要c++的支持,并且c++的异常也会导致0xc000007b错误,因此程序在检测修复的同时,也会根据需要更新系统中的c++组件。自V3.2版本开始使用了全新的c++扩展包,可以大幅提高工业软件修复成功的概率。修复c++的功能仅限于增强版,标准版及在线修复版在系统c++异常时(非丢失时)会提示用户使用增强版进行修复。 程序有两种窗口样式。正常模式即默认样式,适合绝大多数用户使用。另有一种简约模式,此时窗口将只显示最基本的内容,修复会自动进行,修复完成10秒钟后会自动退出。该窗口样式可以使修复工作变得更加简单快速,同时方便其他软件、游戏将本程序内嵌,即可进行无需人工参与的快速修复。开启简约模式的方法是:打开程序所在目录下的“Settings.ini”文件(如果没有可以自己创建),将其中的“FormStyle”一项的值改为“Simple”并保存即可。 程序有高级筛选功能,开启该功能后用户可以自主选择要修复的文件,避免了其他不必要的修复工作。同时,也支持通过文件进行辅助筛选,只要在程序目录下建立“Filter.dat”文件,其中的每一行写一个需要修复文件的序号即可。该功能仅针对高级用户使用,并且必须在正常窗口模式下才有效(简约模式时无效)。 本程序有自动记录日志功能,可以记录每一次检测修复结果,方便在出现问题时,及时分析和查找原因,以便找到解决办法。 程序的“选项”对话框中包含了4项高级功能。点击其中的“注册系统文件夹中所有dll文件”按钮可以自动注册系统文件夹下的所有dll文件。该项功能不仅能修复DirectX的问题,还可以修复系统中很多其他由于dll未注册而产生的问题,颇为实用。点击该按钮旁边的小箭头,还可以注册任意指定文件夹下的dll文件,方便用户对绿色版、硬盘版的程序组件进行注册。点击第二个按钮可以为dll文件的右键菜单添加“注册”和“卸载”项,方便对单独的dll文件进行注册。请注意,并不是所有的dll文件都可以通过这种方式注册。点击“DirectX版本”选项卡可以自行修改系统中DirectX的版本信息。点击“DirectX加速”选项卡可以控制系统中DirectX加速的开启与关闭。 新版程序集成了用户反馈程序,可以在用户允许的前提下发送检测修复结果。用户也可以在出现问题时通过反馈程序和软件作者进行交流,共同查找问题。反馈是完全自愿和匿名(如果不填写E-mail地址)的。 本程序的通用版基于Microsoft .NET Framework 2.0开发,对于Windows 2000、Windows XPWindows 2003的用户需要首先安装.NET Framework 2.0或更高版本方可运行本程序。有关下载和安装的详细信息请参阅“致Windows XP用户.txt”文件。对于Windows Vista、Windows 7及后续用户,可以直接运行本程序。 同时鉴于Windows 8(Windows 8.1、Windows 8.1 Update)、Windows 10系统中默认未包含.NET Framework 2.0,因此新版的程序文件夹内将包含一个DirectX_Repair_win8的特别版程序,该程序功能与通用版相同,基于.NET Framework 4.0开发,可以在Windows8(Windows 8.1、Windows 8.1 Update)、Windows 10系统中直接运行(其他系统如果安装了.NET Framework 4.0也可以运行这个特别版的程序)。 本程序的官方博客地址为:http://blog.csdn.net/vbcom/article/details/6962388 所有的更新以及技术支持都可以到该博客上找到。
DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。程序主要针对0xc000007b问题设计,可以完美修复该问题。本程序中包含了最新版的DirectX redist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。 本程序为了应对一般电脑用户的使用,采用了傻瓜式一键设计,只要点击主界面上的“检测并修复”按钮,程序就会自动完成校验、检测、下载、修复以及注册的全部功能,无需用户的介入,大大降低了使用难度。 本程序适用于多个操作系统,如Windows XP(需先安装.NET 2.0,详情请参阅“致Windows XP用户.txt”文件)、Windows Vista、Windows 7、Windows 8、Windows Blue(Windows 8.1),同时兼容32位操作系统和64位操作系统。本程序会根据系统的不同,自动调整任务模式,无需用户进行设置。 本程序的V3.2版分为标准版、增强版以及在线修复版。其中的标准版以及增强版都包含完整的DirectX组件。另外,增强版中还额外包含了c++ Redistributable Package,因此增强版不但能解决DirectX组件的问题,而且还能解决c++组件异常产生的问题。增强版适合无法自行解决c++相关问题的用户使用。在线修复版的功能与标准版相同,只是其所需的文件将通过Internet下载,因此大大减小了程序的体积。本程序的各个版本之间,主程序完全相同,只是配套使用的数据包不同。因此,当您使用标准版数据包时,程序将进行标准修复;当您使用增强版的数据包时,程序将进行增强修复;当数据包不全或没有数据包(即只有DirectX Repair.exe程序)时,程序将进行在线修复。在线修复、离线修复可自由灵活组合,充分满足不同用户的需要。 本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。新程序更改了自我校验方式,因此使用新版本的程序时不会再出现自我校验失败的错误;但并非取消自我校验,因此程序安全性与之前版本相同,并未降低。 程序有自动更新c++功能。由于绝大多数软件运行时需要c++的支持,并且c++的异常也会导致0xc000007b错误,因此程序在检测修复的同时,也会根据需要更新系统中的c++组件。V3.2版本使用了全新的c++扩展包,可以大幅提高工业软件修复成功的概率。此功能仅限于增强版。 程序有两种窗口样式。正常模式即默认样式,适合绝大多数用户使用。另有一种简约模式,此时窗口将只显示最基本的内容,修复会自动进行,修复完成10秒钟后会自动退出。该窗口样式可以使修复工作变得更加简单快速,同时方便其他软件、游戏将本程序内嵌,即可进行无需人工参与的快速修复。开启简约模式的方法是:打开程序所在目录下的“Settings.ini”文件(如果没有可以自己创建),将其中的“FormStyle”一项的值改为“Simple”并保存即可。 程序有高级筛选功能,开启该功能后用户可以自主选择要修复的文件,避免了其他不必要的修复工作。同时,也支持通过文件进行辅助筛选,只要在程序目录下建立“Filter.dat”文件,其中的每一行写一个需要修复文件的序号即可。该功能仅针对高级用户使用,并且必须在正常窗口模式下才有效(简约模式时无效)。 本程序有自动记录日志功能,可以记录每一次检测修复结果,方便在出现问题时,及时分析和查找原因,以便找到解决办法。 程序的“选项”对话框中包含了4项高级功能。点击其中的“注册系统文件夹中所有dll文件”按钮可以自动注册系统文件夹下的所有dll文件。该项功能不仅能修复DirectX的问题,还可以修复系统中很多其他由于dll未注册而产生的问题,颇为实用。点击该按钮旁边的小箭头,还可以注册任意指定文件夹下的dll文件,方便用户对绿色版、硬盘版的程序组件进行注册。点击第二个按钮可以为dll文件的右键菜单添加“注册”和“卸载”项,方便对单独的dll文件进行注册。请注意,并不是所有的dll文件都可以通过这种方式注册。点击“DirectX版本”选项卡可以自行修改系统中DirectX的版本信息。点击“DirectX加速”选项卡可以控制系统中DirectX加速的开启与关闭。 新版程序集成了用户反馈程序,可以在用户允许的前提下发送检测修复结果。用户也可以在出现问题时通过反馈程序和软件作者进行交流,共同查找问题。反馈是完全自愿和匿名(如果不填写E-mail地址)的。 本程序的通用版基于Microsoft .NET Framework 2.0开发,对于Windows 2000、Windows XPWindows 2003的用户需要首先安装.NET Framework 2.0或更高版本方可运行本程序。有关下载和安装的详细信息请参阅“致Windows XP用户.txt”文件。对于Windows Vista、Windows 7用户,可以直接运行本程序。 同时鉴于Windows 8(Windows Blue、Windows 8.1)系统中默认未包含.NET Framework 2.0,因此新版的程序文件夹内将包含一个DirectX_Repair_win8的特别版程序,该程序功能与通用版相同,基于.NET Framework 4.0开发,可以在Windows8(Windows Blue、Windows 8.1)系统中直接运行(其他系统如果安装了.NET Framework 4.0也可以运行这个特别版的程序)。 本程序的官方博客地址为:http://blog.csdn.net/vbcom/article/details/6962388所有的更新以及技术支持都可以到该博客上找到。
DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。程序主要针对0xc000007b问题设计,可以完美修复该问题。本程序中包含了最新版的DirectX redist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。 本程序为了应对一般电脑用户的使用,采用了傻瓜式一键设计,只要点击主界面上的“检测并修复”按钮,程序就会自动完成校验、检测、下载、修复以及注册的全部功能,无需用户的介入,大大降低了使用难度。 本程序适用于多个操作系统,如Windows XP(需先安装.NET 2.0,详情请参阅“致Windows XP用户.txt”文件)、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 8.1 Update、Windows 10,同时兼容32位操作系统和64位操作系统。本程序会根据系统的不同,自动调整任务模式,无需用户进行设置。 本程序的V3.5版分为标准版、增强版以及在线修复版。标准版支持修复DirectX的功能,而增强版则支持同时修复DirectX和c++的功能。在线修复版与标准版相同,默认只支持修复DirectX,但其所需的数据包需要在修复时自动下载。各个版本之间,主程序完全相同,只是其配套使用的数据包不同。因此,标准版和在线修复版可以通过补全扩展包的形式成为增强版。本程序自V3.5版起,自带扩展功能。只要在主界面的“工具”菜单下打开“选项”对话框,找到“扩展”标签,点击其中的“开始扩展”按钮即可。扩展过程需要Internet连接,扩展成功后重新运行程序即可使新的数据包生效。扩展用时根据网络速度不同而不同,最快仅需数秒,最慢需要数分钟,烦请耐心等待。 本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。新程序更改了自我校验方式,因此使用新版本的程序时不会再出现自我校验失败的错误;但并非取消自我校验,因此程序安全性与之前版本相同,并未降低。 程序有自动更新c++功能。由于绝大多数软件运行时需要c++的支持,并且c++的异常也会导致0xc000007b错误,因此程序在检测修复的同时,也会根据需要更新系统中的c++组件。自V3.2版本开始使用了全新的c++扩展包,可以大幅提高工业软件修复成功的概率。修复c++的功能仅限于增强版,标准版及在线修复版在系统c++异常时(非丢失时)会提示用户使用增强版进行修复。 程序有两种窗口样式。正常模式即默认样式,适合绝大多数用户使用。另有一种简约模式,此时窗口将只显示最基本的内容,修复会自动进行,修复完成10秒钟后会自动退出。该窗口样式可以使修复工作变得更加简单快速,同时方便其他软件、游戏将本程序内嵌,即可进行无需人工参与的快速修复。开启简约模式的方法是:打开程序所在目录下的“Settings.ini”文件(如果没有可以自己创建),将其中的“FormStyle”一项的值改为“Simple”并保存即可。 程序有高级筛选功能,开启该功能后用户可以自主选择要修复的文件,避免了其他不必要的修复工作。同时,也支持通过文件进行辅助筛选,只要在程序目录下建立“Filter.dat”文件,其中的每一行写一个需要修复文件的序号即可。该功能仅针对高级用户使用,并且必须在正常窗口模式下才有效(简约模式时无效)。 本程序有自动记录日志功能,可以记录每一次检测修复结果,方便在出现问题时,及时分析和查找原因,以便找到解决办法。 程序的“选项”对话框中包含了5项高级功能。点击其中的“注册系统文件夹中所有dll文件”按钮可以自动注册系统文件夹下的所有dll文件。该项功能不仅能修复DirectX的问题,还可以修复系统中很多其他由于dll未注册而产生的问题,颇为实用。点击该按钮旁边的小箭头,还可以注册任意指定文件夹下的dll文件,方便用户对绿色版、硬盘版的程序组件进行注册。点击第二个按钮可以为dll文件的右键菜单添加“注册”和“卸载”项,方便对单独的dll文件进行注册。请注意,并不是所有的dll文件都可以通过这种方式注册。点击“扩展”选项卡可以将任意版本的程序扩展成增强版。点击“DirectX版本”选项卡,可以自行修改系统中DirectX的版本信息。点击“DirectX加速”选项卡可以控制系统中DirectX加速的开启与关闭。 新版程序集成了用户反馈程序,可以在用户允许的前提下发送检测修复结果。用户也可以在出现问题时通过反馈程序和软件作者进行交流,共同查找问题。反馈是完全自愿和匿名(如果不填写E-mail地址)的。 本程序的通用版基于Microsoft .NET Framework 2.0开发,对于Windows 2000、Windows XPWindows 2003的用户需要首先安装.NET Framework 2.0或更高版本方可运行本程序。有关下载和安装的详细信息请参阅“致Windows XP用户.txt”文件。对于Windows Vista、Windows 7及后续用户,可以直接运行本程序。 同时鉴于Windows 8(Windows 8.1、Windows 8.1 Update)、Windows 10系统中默认未包含.NET Framework 2.0,因此新版的程序文件夹内将包含一个DirectX_Repair_win8_win10的特别版程序,该程序功能与通用版相同,基于.NET Framework 4.0开发,可以在Windows8(Windows 8.1、Windows 8.1 Update)、Windows 10系统中直接运行(其他系统如果安装了.NET Framework 4.0也可以运行这个特别版的程序)。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧