svchost.exe应用程序错误

不知道怎么回事 电脑总出现svchost.exe应用程序错误 点确定或者取消就断网 检查没有病毒 请高手告诉我下解决方法 不要在别人那粘贴一大堆没用的 要确实惯用的 谢谢
在不重做系统的情况下。 请简单扼要的说。 别整这一大堆复制的东西谁会看啊 我在官网下了补丁但是打不上 一打就说什么找不到的意思的弹出来个框。 疯了 。 没有人能详细说明下么 。

中毒了魔波下微软MS06-040补丁在杀毒
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-01-10
1.错误的解决方法描述
当我们按下Alt+Ctrl+Del打开任务管理器,发现进程中出现多个Svchost.exe,则表明系统中毒,我们首先将所有的Svchost结束掉,然后使用相关的杀毒工具查杀病毒。

注:
2003年的夏天,“冲击波”病毒横行的时候有一种说法就是Svchost.exe都是病毒,一看到就要删除。这种说法让电脑用户人心惶惶,因为每个使用 Windows XP系统的用户在按照文章中介绍的检查有无Svchost.exe的方法都可以找到几个Svchost.exe进程。

有关Svchost.exe详见:
http://forum.ikaka.com/topic.asp?board=3&artid=6087605

2.方案由来及后果
在很多人的印象中,每个应用程序一般只对应一个进程,如QQ对应QQ.EXE进程、记事本对应notepad.exe进程等。所以当看到系统有多个同样名字的进程时,总是会将其联想为病毒或者木马程序在作怪。如果不加思索,野蛮的将其中的某些Svchost.exe进程结束掉,会让系统的运行变得不稳定。

3.正确的解决办法
Windows 进程分为独立进程和共享进程两种,Svchost.exe属于后者。Windows XP为了节约系统资源,将很多个系统服务做为共享方式由Svchost.exe来启动。Svchost本身只是作为服务宿主,并不能实现任何服务功能, svchost通过调用相应服务的动态链接库(DLL)来启动该服务,而Windows将这些服务分为几个组,同组的服务共享一个Svchost进程,不同的组所指向的Svchost不同。通常情况下,Windows XP有4个由Svchost启动的服务组,也就是说Windows XP系统一般有4个Svchost.exe进程。当然某些应用程序或服务也有可能会调用Svchost,所以当你看到系统中有多余4个的 Svchost.exe进程,也不要盲目判断系统中了病毒。实际上Svchost.exe进程的个数跟是否中毒无直接关系。

小提示:
★ 笔者做了下面一个非常有趣的测试:打开任务管理器,切换到“进程”选项卡,首先手动结束掉由上到下的第三个Svchost.exe进程,结束完后系统会马上重新建立该进程,接下来我们手动结束掉由上到下的最后一个Svchost.exe进程,系统会出现一个类似中了冲击波病毒的对话窗口,并倒计时关机,这是由于该Svchost.exe进程引导RPC服务,终止该进程则导致RPC服务中断,系统自然会重新启动了。
★Windows 2000中一般有两个Svchost.exe进程,Windows Server 2003则非常多,一般有6个。

既然系统中Svchost.exe进程数与是否中毒无关,我们究竟如何区别正常的和病毒伪造的Svchost进程呢?
我们可以使用下面两种方法来鉴别:
方法一:
在系统所在分区进行搜索,如果发现多个Svchost.exe文件,则系统很有可能中毒。正常的Svchost.exe位于%windir%\\ system32目录下,如果发现其它目录中有Svchost.exe文件,你就要小心了。例如冲击波的变种Win32.Welchia.Worm会在% windir%\\system32\\wins目录种下Svchost.exe文件。
方法二:
察看Svchost.exe进程对应文件的路径。
Windows XP自带的任务管理器中无法察看,我们需要借助第三方工具,例如Windows优化大师自带的进程管理工具,运行它后定位到Svchost.exe进程,可以看到它对应的运行文件的真实路径。

小提示:
★不少木马程序会采用将自己伪装成跟常见进程相似的文件名或者相同的文件名但扩展名不相同,如果你在任务管理器中看到Scvhost.exe、Svch0st.exe等进程,肯定有木马已经植入你的系统。
★ 很多朋友在查看CPU占用率时,一个叫做“System Idle Process”的进程常常会显示为90-99%。不必担心,实际上恰恰相反的是这里的90-99%是CPU资源空闲了出来的资源。这里的数字越大表示 CPU可用资源越多,数字越小则表示CPU资源越紧张。

其它错误的说法和方案
1.在安装Windows XP后,删除C:\\Windows\\System32\\Dllcache下的所有文件,可以节约大概200MB的磁盘空间。
点评:该文件夹里保存的是系统备份的dll文件,Windows在安装驱动、软件、升级的时候可能会用到里面的文件,如果将其删除会给我们带来更大的不便。
2. 由于系统空间比较宝贵,很多朋友将软件安装在其它分区,但每次安装软件时提示的默认安装路径都是C:\\Program Files,我们可以打开注册表,定位到“[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\ CurrentVersion]”,将右边窗口中的ProgramFilesDir字符串值修改为我们想要的路径。
点评:这样设置确实让我们方便不少。但它带来很多弊端,比如打开Outlook Express时,会报告C盘磁盘已满或者内存不足的错误,并提示“MSOE.dll无法初始化”,另外还可以引起Media Player等系统程序的运行故障。
3.修改\\%Systemroot%\\System32\\Drivers\\Etc文件夹下的host.sam文件……
点评:很多朋友使用修改host文件的办法来屏蔽恶意网站,这点没错。不过很多人却没搞清楚到底哪个文件是“host文件”。在Windows 98下存在一个host.sam文件,该文件只是微软为我们修改host文件做的一个范例文件,如果我们修改host.sam文件根本达不到任何效果,真正的host文件是一个名为“host”没有扩展名的文件。而在Windows XP下,所谓“host.sam”文件根本不存在,我们修改host文件应该是用记事本打开\\%Systemroot%\\System32\\ Drivers\\Etc目录下的host文件(同样没有扩展名)。
4.要将jpg文件与版本的ACDSEE(4.0以下的版本)建立文件关联,只需要运行“regsvr32 /u shimgvw.dll”命令。
点评:这种办法的确可以让ACDSEE和jpg格式文件建立文件关联,但该命令卸载了Windows XP的图片预览功能,有点矫枉过正。正确的方法是:删除注册表中的“[HKEY_CLASSES_ROOT\\ SystemFileAssociations\\image]”项。本回答被网友采纳
第2个回答  2009-01-02
一、应用程序没有检查内存分配失败

程序需要一块内存用以保存数据时,就需要调用操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“指针”。

内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的指针,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。

若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用指针,继续在之后的运行中使用这块内存。真正的0地址内存区保存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即死机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的“写内存”错误,并指出被引用的内存地址为“0x00000000”。

内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统文件之后。

二、应用程序由于自身BUG引用了不正常的内存指针

在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的指针已经失效了。有可能是 “忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止运行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!

像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效指针不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其他随机数字。

如果系统经常有所提到的错误提示,下面的建议可能会有帮助:

1.查看系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。

2.更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统文件、修正系统参数。有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。

3.试用新版本的应用程序。
问题

运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。
“0x????????”指令引用的“0x????????”内存。该内存不能为“read”。
“0x????????”指令引用的“0x????????”内存,该内存不能为“written”。
一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。

故障分析

硬件方面:
一般来说,内存出现问题的可能性并不大,主要方面是:内存条坏了、内存质量有问题,还有就是2个不同牌子不同容量的内存混插,也比较容易出现不兼容的情况,同时还要注意散热问题,特别是超频后。你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。
假如是双内存,而且是不同品牌的内存条混插或者买了二手内存时,出现这个问题,这时,就要检查是不是内存出问题了或者和其它硬件不兼容。

软件方面:
先简单说说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在其一位置时,因为没有足够空间,就会发生溢出现象。举个例子:一个桶子只能将一斤的水,当放入两斤的水进入时,就会溢出来。而系统则是在屏幕上表现出来。这个问题,经常出现在windows2000和XP系统上,Windows 2000/XP对硬件的要求是很苛刻的,一旦遇到资源死锁、溢出或者类似Windows 98里的非法操作,系统为保持稳定,就会出现上述情况。另外也可能是硬件设备之间的兼容性不好造成的。
第3个回答  2009-01-07
KB958644补丁 砸上就好了
相似回答
大家正在搜