1.无法安装软件系统提示:无法访问window installer(如图)

2.游戏一换地方就要改注册表

3.问个注册表数据的问题

windows如何修改注册表_windowsce修改注册表

什么是注册表?

《英汉双解微软计算机辞典》(第 5 版)对注册表的定义是:

Microsoft Windows 9x、Windows CE、Windows NT 和 Windows 2000 中使用的中央分层数据库,用于存储为一个或多个用户、应用程序和硬件设备配置系统所必需的信息。

注册表包含 Windows 在运行期间不断引用的信息,例如,每个用户的配置文件、计算机上安装的应用程序以及每个应用程序可以创建的文档类型、文件夹和应用程序图标的属性表设置、系统上存在哪些硬件以及正在使用哪些端口。

注册表取代了 Windows 3.x 和 MS-DOS 配置文件(例如,Autoexec.bat 和 Config.sys)中使用的绝大多数基于文本的 .ini 文件。虽然几个 Windows 操作系统都有注册表,但这些操作系统的注册表有一些区别。

注册表数据存储在二进制文件中。

注册表因为它复杂的结构和没有任何联系的CLSID键使得它可能看上去很神秘。不幸的是,微软并没有完全公开讲述关于注册表正确设置的支持信息,这样使得注册表看上去更不可琢磨。处理和编辑注册表如同“黑色艺术”一样,它在系统中的设置让用户感觉象在黑暗中摸索一样找不到感觉。这样,因为用户对这方面的缺乏了解使得注册表更多的出现故障。

Windows注册表是帮助Windows控制硬件、软件、用户环境和Windows界面的一套数据文件,注册表包含在Windows目录下两个文件system.dat和user.dat里,还有它们的备份system.da0和user.da0。通过Windows目录下的regedit.exe程序可以存取注册表数据库。在以前,在windows的更早版本(在win95以前),这些功能是靠win.ini,system.ini和其他和应用程序有关联的.ini文件来实现的.

在windows操作系统家族中,system.ini和win.ini这两个文件包含了操作系统所有的控制功能和应用程序的信息,system.ini管理计算机硬件而win.ini管理桌面和应用程序。所有驱动、字体、设置和参数会保存在.ini文件中,任何新程序都会被记录在.ini文件中。这些记录会在程序代码中被引用。因为受win.ini和system.ini文件大小的限制,程序员添加辅助的.INI文件以用来控制更多的应用程序。举例来说,微软的Excel有一个excel.ini文件,它包含着选项、设置、缺省参数和其他关系到Excel运行正常的信息。在system.ini和win.ini中只需要指出excel.ini的路径和文件名即可。

最开始,system.ini和win.ini控制着所有windows和应用程序的特征和存取方法,它在少数的用户和少数应用程序的环境中工作的很好。随着应用程序的数量和复杂性越来越大,则需要在.ini文件中添加更多的参数项。这样下来,在一个变化的环境中,在应用程序安装到系统中后,每个人都会更改.ini文件。然而,没有一个人在删除应用程序后删除.ini文件中的相关设置,所以system.ini和win.ini这个两个文件会变的越来越大。每增加的内容会导致系统性能越来越慢。而且每次应用程序的升级都出现这样的难题:升级会增加更多的参数项但是从来不去掉旧的设置。而且还有一个明显的问题,一个.ini文件的最大尺寸是64KB。为了解决这个问题,软件商自己开始支持自己的.ini文件,然后指向特定的ini文件如win.ini和system.ini文件。这样下来多个.ini文件影响了系统正常的存取级别设置。如果一个应用程序的.ini文件和WIN.INI文件设置起冲突,究竟是谁的优先级更高呢?

注册表最初被设计为一个应用程序的数据文件相关参考文件,最后扩展成对于32位操作系统和应用程序包括了所有功能下的东东.注册表是一套控制操作系统外表和如何响应外来事件工作的文件。这些“事件”的范围从直接存取一个硬件设备到接口如何响应特定用户到应用程序如何运行等等。注册表因为它的目的和性质变的很复杂,它被设计为专门为32位应用程序工作,文件的大小被限制在大约40MB。

注册表都做些什么?

注册表是为Windows NT和Windows95中所有32位硬件/驱动和32位应用程序设计的数据文件。16位驱动在Winnt下无法工作,所以所有设备都通过注册表来控制,一般这些是通过BIOS来控制的。在Win95下,16位驱动会继续以实模式方式设备工作,它们使用system.ini来控制。16位应用程序会工作在NT或者Win95 下,它们的程序仍然会参考win.ini和system.ini文件获得信息和控制。

在没有注册表的情况下,操作系统不会获得必须的信息来运行和控制附属的设备和应用程序及正确响应用户的输入。

在系统中注册表是一个记录32位驱动的设置和位置的数据库。当操作系统需要存取硬件设备,它使用驱动程序,甚至设备是一个BIOS支持的设备。无BIOS支持设备安装时必须需要驱动,这个驱动是独立于操作系统的,但是操作系统需要知道从哪里找到它们,文件名、版本号、其他设置和信息,没有注册表对设备的记录,它们就不能被使用。

当一个用户准备运行一个应用程序,注册表提供应用程序信息给操作系统,这样应用程序可以被找到,正确数据文件的位置被规定,其他设置也都可以被使用。

注册表保存关于缺省数据和辅助文件的位置信息、菜单、按钮条、窗口状态和其他可选项。它同样也保存了安装信息(比如说日期),安装软件的用户,软件版本号和日期,序列号等。根据安装软件的不同,它包括的信息也不同。

然而,一般来说,注册表控制所有32位应用程序和驱动,控制的方法是基于用户和计算机的,而不依赖于应用程序或驱动,每个注册表的参数项控制了一个用户的功能或者计算机功能。用户功能可能包括了桌面外观和用户目录。所以,计算机功能和安装的硬件和软件有关,对所以用户来说项都是公用的。

有些程序功能对用户有影响,有些时作用于计算机而不是为个人设置的,同样的,驱动可能是用户指定的,但在很多时候,它们在计算机中是通用的。

注册表控制用户模式的例子有:

控制面板功能;

桌面外观和图标;

网络参数;

浏览器功能性和特征;

那些功能中的某些是和用户无关的,有些是针对用户的。

计算机相关控制项基于计算机名,和登陆用户无关。控制类型的例子是安装一个应用程序,不管是哪个用户,程序的可用性和存取是不变的,然而,运行程序图标依赖于网络上登陆的用户。网络协议可用性和优先权基于计算机,但是当前连接和用户信息相关。

这里是在注册表中基与计算机控制条目的一些例子:

存取控制;

登陆确认;

文件和打印机共享;

网卡设置和协议;

系统性能和虚拟内存设置;

没有了注册表,Win95和Winnt 就不太可能存在。它们实在太复杂了,以致于用过去的.ini文件无法控制,它们的扩展能力需要几乎无限制的安装和使用应用程序,注册表实现了它。然而,注册表比.ini文件更复杂,理解它如何工作,它做什么和如何用它来做是有效管理系统的关键。

在系统中注册表控制所有32位应用程序和它们的功能及多个应用程序的交互,比如复制和粘贴,它也控制所有的硬件和驱动程序。虽然多数可以通过控制面板来安装和设置,理解注册表仍是做Winnt和Win95系统管理基本常识。

二、注册表的结构

注册表的结构

注册表是Windows程序员建造的一个复杂的信息数据库,它是多层次式的。在不同系统上注册表的基本结构相同。其中的复杂数据会在不同方式上结合,从而产生出一个绝对唯一的注册表。

计算机配置和缺省用户设置的注册表数据在Winnt中被保存在下面这五个文件中:

DEFAULT,SAM,SECURITY,SOFTWARE,SYSTEM,NTUSER.DAT。

Win95中所有系统注册信息保存在windows目录下的SYSTEM.DAT文件里。所有硬件设置和软件信息也保存在这个文件。它要比NT注册表文件简单的多,因为这里并不需要更多的控制。Win95被设计为一个网络的客户或者单独工作的系统,所以用户控制或者安全级别和NT不一样。这使得Win95注册表工作比NT更容易,所以这个文件也比较小。

Win95用户的注册数据一般被保存在windows目录下的user.dat里。如果你在控制面板|密码|用户配置文件中创建并使用多于一个用户的配置文件,每个用户就会有在\WINDOWS\Profiles\username\USER.DAT下它自己的user.dat文件。在启动时,系统将记录你的登陆,从你目录中的配置文件(USER.DAT信息)将被装入,以用来保持你自己的桌面和图标。

控制键

在注册表编辑器中注册表项是用控制键来显示或者编辑的。控制键使得找到和编辑信息项组更容易。因此,注册表使用这些条目。下面是六个控制键

HKEY_LOCAL_MACHINE

HKEY_CLASSES_ROOT

HKEY_CURRENT_CONFIG

HKEY_DYN_DATA

HKEY_USERS

HKEY_CURRENT_USER

Winnt和Win95的注册表并不兼容。从Win95向Winnt升级需要你重新安装32位应用程序,重新在桌面上创建图标,并重新建立用户环境。

通过控制键可以比较容易编辑注册表。虽然它们显示和编辑好像独立的键,其实HKEY_CLASSES_ROOT 和HKEY_CURRENT_CONFIG是 HKEY_LOCAL_MACHINE的一部分。HKEY_CURRENT_USER是HKEY_USERS的一部分。

HKEY_LOCAL_MACHINE包含了HKEY_CLASSES_ROOT和HKEY_CURRENT_CONFIG的所有内容。每次计算机启动时,HKEY_CURRENT_CONFIG和HKEY_CLASSES_ROOT的信息被映射用以查看和编辑。

HKEY_CLASSES_ROOT其实就是HKEY_LOCAL_MACHINE\SOFTWARE\Classes,但是在HKEY_CLASSES_ROOT窗编辑相对来说显得更容易和有条理。

HKEY_USERS保存着缺省用户信息和当前登陆用户信息。当一个域成员计算机启动并且一个用户登陆,域控制器自动将信息发送到HKEY_CURRENT_USER里,而且HKEY_CURRENT_USER信息被映射到系统内存中。其他用户的信息并不发送到系统,而是记录在域控制器里。

键和子键

数据被分割成多层次的键和子键,建立分层次(就象Exploer一样)结构更易于编辑。每个键有成组的信息而且根据在其中的数据类型被命名。每个键在它的文件夹图标上都有一个加号(+)标志子键说明在它下面还有更多内容的东西。当点开它的时候,文件夹的加号标志被替换成一个减号(-)标志,然后显示出下一级的子键。

所有软件,硬件,windows工作的设置都存放在HKEY_LOCAL_MACHINE。所有安全策略,用户权限和共享信息也包括在这个键中。用户权限,安全策略,共享信息可以通过Windows NT域用户管理器,Explorer和Win95中控制面板来设置。

HKEY_CLASSES_ROOT

HKEY_CLASSES_ROOT包含了所有应用程序运行时必需的信息:

在文件和应用程序之间所有的扩展名和关联;

所有的驱动程序名称;

类的ID数字(所要存取项的名字用数字来代替);

DDE和OLE的信息;

用于应用程序和文件的图标;

HKEY_CURRENT_CONFIG.

HKEY_CURRENT_CONFIG是在HKEY_LOCAL_MACHINE中当前硬件配置信息的映射。如果系统只有一个配置文件,也就是原始配置,数据将一直在同样的地方。在控制面板|系统|硬件配置文件|创建一个额外的配置使额外配置信息放入HKEY_LOCAL_MACHINE。当Win95中存在多个配置文件时,当每次计算机启动时将给出一个提示让你选择一个配置文件。在Winnt中,在启动时你可以按空格键来选择上次正常启动时硬件配置文件。根据硬件配置文件选择的不同,特定的信息被映射到HKEY_CURRENT_CONFIG。

HKEY_DYN_DATA

HKEY_DYN_DATA和其他的注册表控制键不同,因为实际上它并不被写入硬盘驱动器中。Win95的一个优点是,在系统启动时HKEY_DYN_DATA这个控制键储存收集到的即插即用信息并配置它们。它保存在内存中,Win95用它来控制硬件。因为是在内存中,所以它不从硬盘中读取,每次当你启动计算机时,配置都有可能会不一样。在启动时Win95必须计算超过1600种可能的配置。所以,如果系统改变既定的设置而没有报告给Win95那么潜在的问题就可能发生。系统大多数时间工作良好,但是并非一直如此。

HKEY_USERS

HKEY_USERS仅包含了缺省用户设置和登陆用户的信息。虽然它包含了所有独立用户的设置,但在用户未登陆网络时用户的设置是不可用的。这些设置告诉系统哪些图标会被使用,什么组可用,哪个开始菜单可用,哪些颜色和字体可用,和控制面板上什么选项和设置可用。

HKEY_CURRENT_USER

用来保存当前用户和缺省用户的信息,HKEY_CURRENT_USER仅映射当前登陆用户的信息。

各主键的简单介绍

HKEY_LOCAL_MACHINE

HKEY_LOCAL_MACHINE是一个显示控制系统和软件的处理键。HKLM键保存着计算机的系统信息。它包括网络和硬件上所有的软件设置。(比如文件的位置,注册和未注册的状态,版本号等等)这些设置和用户无关,因为这些设置是针对使用这个系统的所有用户的。

HKEY_LOCAL_MACHINE\AppEvents

为了以后在瘦客户机上运行客户机/服务器这样的应用程序,在Win95/98中AppEvents键是空的。应用程序实际上都驻留网络服务器上,这些键会保存部分指针。

HKEY_LOCAL_MACHINE\Config

这个键保存着你计算机上所有不同的硬件设置(这些从控制面板的系统属性中硬件配置文件中可以创建)。这些配置在启动时通常被复制到HKCC。每个配置会被用一个键(比如0001或者0002等等)来保存,每个都是一个独立的配置。如果你只有一个单一的配置,那就只会有0001这个键

HKEY_LOCAL_MACHINE\Config\0001\Display

这个键表示显示的设置,如荧屏字体,窗体大小,窗体位置和分辨率等

一个小技巧:当设置了计算机不支持的大分辨率导致Windows不能启动时(黑屏),可以修改分辨率来解决。进入安全模式,运行regedit.exe,在这个键的Resolution键值中把数据值修改为640,480或者800,600这样的低分辨率,然后重新启动计算机即可。

HKEY_LOCAL_MACHINE\Config\0001\System

这个键保存着系统里打印机的信息

HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers

在这个键下面,有一个键是为系统上每一个打印机设置的,通过控制面板添加和删除打印机会调整这个列表

HKEY_LOCAL_MACHINE\Enum

Enum键包含启动时发现的硬件设备和那些既插即用卡的信息。Win95使用总线列举在启动时通过不同的.ini文件来检测硬件信息。那些在启动时被安装的和被检测到的硬件会显示在这里。子键包括BIOS, ESDI, FLOP, HTREE, ISAPNP, Monitor, Network, Root, SCSI, 和 VIRTUAL。子键名表示它们各自的硬件设备信息。

HKEY_LOCAL_MACHINE\Enum\BIOS

BIOS键保存着系统中所有即插即用设备的信息。它们用一套代码数列出,包括每一个键的详细说明,举例,*pnp0400是并行口LPT1的键。如果LPT1并不具备即插即用功能,它就会别列入到Enum下的Root键中

HKEY_LOCAL_MACHINE\Enum\Root

Root键包括所有非即插即用设备的信息。在这里,我们可以迅速断定哪些设备是即插即用,那些不是。比如SCSI适配器,这个设备必须符合Win95中一个键名为ForcedConfig的硬件设置,这个不会改变。

HKEY_LOCAL_MACHINE\Enum\Network

win95的网络功能在这个键有详细说明,子键包括了每个已经安装的主要的服务和协议。

HKEY_LOCAL_MACHINE\HARDWARE

hardware子键包括了两个多层的子键:DESCRIPTION键,它包含了中央处理器和一个浮点处理器的信息。还有一个设备映射键,它下面的串行键列出你所有的com端口。这个hardware键仅保存超级终端程序的信息,及数学处理器和串行口。

HKEY_LOCAL_MACHINE\Network

这个键仅保存网络登陆信息。所有网络服务细节都保存在HKEY_LOCAL_MACHINE\Enum\Network这个键中。这个键有一个子键,logon,包括了lmlogon(本地机器登陆?0=false 1=true)的值,logonvalidated(必须登陆验证),策略处理,主登陆方式(Windows登陆 ,微软网络客户方式等),用户名和用户配置。

HKEY_LOCAL_MACHINE\SECURITY

security 有两个子键,第一个是存取(它最终致使一个远程键列出网络安全资源,存取权限等)和提供(包括列出网络地址和地址服务器),这个键被保留用在以后使用高级安全功能和NT兼容性上

HKEY_LOCAL_MACHINE\SOFTWARE

这个键列出了所有已安装的32位软件和程序的.ini文件。它包括了变化,依靠软件安装。那些程序的控制功能在这里的子键中列出。多数子键简单的列出了安装软件的版本号。

我们在\Microsoft\Windows\Current Version下发现了一些有意思的设置,它有如下子键:

1.App paths: 你曾经安装过的所有32位软件的位置。

2.Applets, Compression, Controls Folder : 包括下控制面板象显示属性那样属性条的附件。

3.Detect, explorer :很多有意思的子键如Namespace keys of Desktop和My Computer----它们指出了回收站和拨号网络的CLSID行----和提示子键可以让你建立自己的提示。

4.Extensions : 一个扩展联系的列表,当前相关联的扩展名和比特定的执行文件更适合的目标类型。

5.Fonts, fontsize, FS Templates :系统属性条中所选择文件系统模板, 服务器,桌面计算机或者笔记本电脑信息。

6.MS-DOS Emulation :包括一个应用程序兼容子键 为大量过时的程序二进制键所设。

7.MS-DOS Options :在dos模式下的设置,如himem.sys,cd-roms等。

8.Network :网络驱动的配置。

9.Nls, Policies :系统管理员认为你不应该去做的事。

10.ProfileList :所有可以登陆你计算机的用户名列表。

11.在Windows启动时运行的程序的神秘之处是它们并不在开始菜单的启动文件夹中。它们在HKEY_LOCAL_MACHINE\Microsoft\Windows\CurrentVersion\下的子键中被执行。

Run : 程序在启动时运行

RunOnce : windows初始化时程序在启动时只运行一次,这个经常用在当安装软件之后需要重新启动系统的时候,所以这个键一般都是空的。

RunServices : 它就象Run一样,但是包含了“服务”,它不象一般的程序它们是比较重要的或者是“系统”程序。但是它们不是VXDs,就象McAfee或者RegServ工作一样。

RunServicesOnce : 它只运行一次,但是是“系统自身”的安装(大量的windows安装参数:通常键值包括了系统目录位置,和win95更新,可选项安装组件,和windows启动目录的子键。

注意:在很多黑客木马软件中,常常在这里添加键值(一般是在Run中),这样使得木马软件可以随着windows启动而启动并且很隐秘。在这里可以查看不正常的启动项和去掉无用的运行程序(比如我就很不喜欢超级解霸的自动伺服器,在这里可以去掉它)。

12.SharedDLLs:共享DLL的列表,每一个都给出了在一个不可知系统的一个数字等级。

13.Shell Extensions:列出了“被认可的”OLE注册条,和相应的CLSID连接。

14.ShellScrap :这个包含了一个PriorityCacheformats的子键,它包括了一个空的有限值,它更象过去SmartDrive命令行参数的派生。

15.Time Zones : 主键值是你现在的时区;子键定义了所以可能的时区。

16.Uninstall:这个保存了程序在添加/删除程序对话框的显示;子键包含了指向反安装程序的路径。和安装向导相似.......)winlogon(包含了合法登陆布告的文本句)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet

这个子键包括设备驱动和其他服务的描述和控制。不同于windows nt,win95只包括限制驱动的控制设置信息。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control

这个子键包括了win95控制面板中的信息。不要编辑这些信息,因为一些小程序的改变在很多地方,一个丢失的项会使这个系统变的不稳定

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

这个键包括了所有win95的标准服务。所有被添加的服务和设备,每个标准的服务键包括了它的设置和辨认设置。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Arbitrators

atbitrators键包括了当两个设备共同占用同样的设置需要解决的信息。四个子键包括了内存地址,冲突,DMA,I/O端口冲突和IRQ冲突。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Class

class键包括了所有win95支持的设备classes控制,这些和你在添加新硬件出现的硬件组很类似,还包括了这些设备如何安装的信息。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\inetaccs

这个键包括了关于这个系统变化的ie附件的可用性,它仅在你安装过ie2。0或者更高版本才出现。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSNP32

msnp32描述了客户机如何在microsoft网络中实现功能,它包括了认证过程和认证者的信息。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NWNP32

nenp32键描述了windows客户如何在netware网络中工作功能,它包括了关于认证过程和证明者的信息。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess

在这个键里包括需要远程工作在win95系统上的信息,有认证参数,主机信息,和为了建立一个拨号连接工作的协议信息。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP

这个键包括了所以snmp(简单网络管理协议)的参数。它包括了允许的管理,配置陷阱,和有效的团体。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VxD

vxd键包括了win95中所有32位虚拟设备驱动信息,win95自动管理它们,所以不必要用注册表编辑器编辑它们,所以的静态vxds用子键列出。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebPost

webpost键包括了所有装载的internet邮局的设置,如果你连接一个isp,并且它列出载这里,你应该给自己选则一个服务器。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock

这个键列出了当连接到internet上winnsock文件的信息,如果列出了不正确的文件,你将不会连接上internet。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinTrust

wintrust功能是检查从Internet上下载来的文件是否有病毒,它可以确保你得到干净安全的文件。

HKEY_CLASSES_ROOT

在注册表中HKEY_CLASSES_ROOT是系统中控制所有数据文件的项。这个在Win95和Winnt中是相通的。HKEY_CLASSES_ROOT控制键包括了所有文件扩展和所有和执行文件相关的文件。它同样也决定了当一个文件被双击时起反应的相关应用程序。

HKEY_CLASSES_ROOT被用作程序员在安装软件时方便的发送信息,在Win95和Winnt中,HKEY_CLASSES_ROOT和HKEY_LOCAL_MACHINE\Software\Classes是相同的。程序员在运行他们的启动程序时不需要担忧实际的位置,相反的,他们只需要在HKEY_CLASSES_ROOT中加入数据就可以了。

在Windows用户图形界面下,每件事----每个文件,每个目录,每个小程序,每个连接,每个驱动---都被看做一个对象;每个对象都有确定的属性和它联系。HKCR包含着对象类型和它们属性的列表。HKCR主要的功能被设置为:

一个对象类型和一个文件扩展名关联

一个对象类型和一种图标关联

一个对象类型和一个命令行动作的关联

定义对象类型相关菜单选项和定义每一个对象类型属性选项

在Win95中,相关菜单就是当你鼠标右击一个对象时所弹出的菜单;属性就是当你选择属性项后一个展开的对话框。用简单术语来说就是在改变HKCR中的设置可以改变一个给定文件扩展名缺省的关联。改变一个文件类型的缺省图标,和添加或者删除给定对象类型的弹出菜单内容(或者所有的对象类型)

HKCR包括了三种基本类型的子键

\? 或者文件扩展名子键

文件扩展名子键在弹出菜单上连接文件扩展名到对象类型和相关操作,属性项,和相关操作。

\object 类型子键

对象类型子键定义了一个对象类型在它缺省图标的项,它的弹出菜单和属性项,它的相关操作和它的CLSID连接。

\CLSID 子键

在Windows下每件事都被用一个数字取代它的名字来对待。就象人往往是用名字来处理事情一样。CLSID是标识所有列出的图标,应用程序,目录,文件类型等等对象的数字。是微软为制造商分配的,每一个都必须是唯一的。制造商将CLSID放入安装程序文件这样就可以在安装时更新注册表。

注册表是应用程序进行时它们需要关于做什么的指示的数据库。比如说,假定你有一个微软Excel 7电子数据表的Word 7文档,当你在Word中双击这个电子数据表,应用程序菜单就会变成Excel的菜单而且电子数据表进入编辑状态,就好像你在Excel中一样。它是如何知道该做什么呢?每个Excel 7创建的文件都有Excel的CLSID连接。Word读这个CLSID后,到注册表中寻找指示,依赖CLSID下的数据运行.DLL文件或者应用程序。

CLSID子键为对象类型提供了OLE和DDE信息和图标。相关菜单,或者包含在它子键中的属性项信息。这个可能是多数让人看到后觉得“恐怖”的键。每个CLSID数必须是唯一的,实际上,为了这个目的微软已经出产了CLSID-产生程序--这个结果导致你往往得到32位16进制的数字串,除非你是程序员,否则多数部分键看起来是很枯燥的。它们包括内存管理模式,客户机/服务器配置,和OLE处理的.dll连接。

关于子键的一点注解

1)shell:Shell键有个一”action“子键,如同”open“一样,这里有一个command子键;command子键有一个缺省句值,它包含了运行程序的

无法安装软件系统提示:无法访问window installer(如图)

开机按F8-修复计算机-命令提示符。输入:

reg load hklm\abc c:\windows\system32\config\system

reg add "hklm\abc\CurrentControlSet\Control\Class\{4D36E96B-E325-11CE-BFC1-08002BE10318}" /v UpperFilters /t REG_MULTI_SZ /d kbdclass

reg unload hklm\abc

重启计算机

游戏一换地方就要改注册表

如果是安装程序在进行到一半因中途停止安装引起问题的话,请确定卸载所有的office安装文件,重新启动系统,再来安装。如果还不能解决,请参考一下的其他方法。

方法 1:使用 Msconfig 工具确认 Installer 服务正在运行

1.单击“开始”,单击“运行”。

2.键入 msconfig,然后单击“确定”。

3.查看在“服务”选项卡上,有没有启动“Windows Installer 服务”选中旁边的复选框。

4.单击“确定”,然后单击“重新启动”以重新启动计算机,再安装程序。

方法 2:重新注册 Windows Installer

警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证您可以解决这些问题。修改注册表需要您自担风险。

注意:由于 Microsoft Windows 有多个版本,因此下列步骤可能与您在计算机上执行的步骤有所不同。如果是这样,请参阅您的产品说明文档来完成这些步骤。

要重新注册 Windows Installer,请按下面的步骤操作。

注意:如果无法完成以下步骤,请使用方法 3。

1. 单击“开始”菜单,然后单击“搜索”。

2.单击“所有文件和文件夹”。

3.在“文件名”框中,键入 Msiexec.exe,然后单击“搜索”。

4.搜索完毕后,请记下 Msiexec.exe 文件的位置。该文件的位置应该与下例中的位置类似:

C:\Windows\System32

5.在“文件”菜单上,单击“关闭”以关闭“搜索”对话框。

6.单击“开始”,单击“运行”。

7.在“打开”框中键入 regedit,然后单击“确定”。

8. 找到并单击以册表项:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSIServer

9. 在注册表编辑器窗口的右窗格中,双击“ImagePath”。

10. 在出现的“编辑字符串”对话框中,确保“数值数据”框中的字符串包含您在步骤 4 中确定的 Msiexec.exe 文件的正确路径。

注意:下面是正确路径的一个示例,其中 drive 是将 Windows 安装到的驱动器:

drive :\Windows\System32\msiexec.exe /V

如果“数值数据”框没有包含正确的路径,则进行适当的更改以更正此路径,然后单击“确定”关闭“编辑字符串”对话框。

11.在“文件”菜单上,单击“退出”以退出注册表编辑器。

12. 以安全模式启动计算机,然后注册 Msiexec.exe 文件。为此,请按照下列步骤操作: ? 关闭计算机,然后重新启动计算机。

重新启动计算机并按键盘上的 F8。在一台配置了多操作系统启动的计算机上,当看到“启动”菜单时按 F8。

使用箭头键选择“安全模式”,然后按 Enter。

当“启动”菜单再次出现并且蓝色文字“安全模式”出现在屏幕底部时,选择您要启动的安装,然后按 Enter。

登录到计算机。

单击“开始”,单击“运行”,在“打开”框中键入 msiexec /regserver,然后单击“确定”。

13. 关闭计算机,然后正常重新启动计算机。

如果仍然无法成功安装 Microsoft Office,而且收到一条错误消息,其内容与“症状”部分列出的消息相似,请使用方法3。

回到顶端

方法3:尝试 Microsoft 知识库文章 319624 中列出的方法

尝试下面的 Microsoft 知识库文章中列出的方法:

319624 安装应用程序时收到“Windows Installer Service could not be accessed”(无法访问 Windows Installer 服务)错误消息

方法4:重新安装 Windows Installer

注意:此方法适用于 Microsoft Windows 95、Microsoft Windows 98、Microsoft Windows Millennium Edition (Me) 和 Microsoft Windows NT 4.0。对于 Microsoft Windows 2000、Microsoft Windows XP 和 Microsoft Windows Server 2003,请重新应用最新的 Service Pack 或修复操作系统。

要重新安装 Windows Installer,请按照以下步骤操作。

注意:由于 Microsoft Windows 有多个版本,因此下列步骤可能与您在计算机上执行的步骤有所不同。如果是这样,请参阅您的产品说明文档来完成这些步骤。 1.单击“开始”,依次指向“所有程序”、“附件”,然后单击“命令提示符”。

Windows 打开一个命令提示符窗口。

2.在命令提示符处,键入下面的一个命令,然后按 Enter,其中 drive 和 Windows 是将 Windows 安装到的驱动器和文件夹。 ?如果运行的是 Microsoft Windows XP、Microsoft Windows 98、Microsoft Windows 2000 或 Microsoft Windows NT,请键入以下命令:

attrib -r -s -h drive:\Windows\System32\dllcache

如果运行的是 Microsoft Windows Millennium Edition (Me),请键入以下命令:

attrib -r -s -h drive:\Windows\System32

3.在命令提示符处,键入以下命令。在键入每行内容后都要按 Enter。

ren msi.dll msi.old

ren msiexec.exe msiexec.old

ren msihnd.dll msihnd.old

4.在命令提示符处,键入 exit,然后按 Enter。

5.重新启动计算机。

6.将 Windows Installer 文件更新为最新版本。为此,请访问以下 Microsoft 网站之一,然后下载并安装 Windows Installer 2.0。

注意:Windows Installer 2.0 包含在 Microsoft Windows XP 中。如果使用的是 Windows XP,则不需要执行此步骤。 ?对于 Windows 98、Windows 98 Second Edition 和 Windows Millennium Edition:

对于 Microsoft Windows NT 4.0 和 Microsoft Windows 2000:

Windows Installer 的安装完成后,正常关闭并重新启动计算机,然后再安装 Microsoft Office。

问个注册表数据的问题

该内存不能read written常见原因

使用Windows操作系统的人有时会遇到这样的错误信息:“0X指令引用的0x00000000内存,该内存不能written”,然后应用程序被关闭。如果去请教一些“高手”,得到的回答往往是“Windows就是这样不稳定”之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的常见原因。

一、应用程序没有检查内存分配失败

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

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

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

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

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

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

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

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

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

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

运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。

“0x”指令引用的“0x”内存。该内存不能为“read”。

“0x”指令引用的“0x”内存,该内存不能为“written”。

不知你出现过类似这样的故障吗?(0x后面内容有可能不一样。)

一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。

下面先说说硬件:

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

假如你是双内存,而且是不同品牌的内存条混插或者买了二手内存时,出现这个问题,这时,你就要检查是不是内存出问题了或者和其它硬件不兼容。如果都没有,那就从软件方面排除故障了。

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

下面我从几个例子给大家分析:

例一:打开IE浏览器或者没过几分钟就会出现"0x70dcf39f"指令引用的"0x00000000"内存。该内存不能为“read”。要终止程序,请单击“确定”的信息框,单击“确定”后,又出现“发生内部错误,您正在使用的其中一个窗口即将关闭”的信息框,关闭该提示信息后,IE浏览器也被关闭。 解决方法:修复或升级IE浏览器,同时打上补丁。看过其中一个修复方法是,Win2000自升级,也就是Win2000升级到Win2000,其实这种方法也就是把系统还原到系统初始的状态下。比如你的IE升级到了6.0,自升级后,会被IE5.0代替。

例二:在windows xp下双击光盘里面的“AutoRun.exe”文件,显示“0x77f745cc”指令引用的“0x00000078”内存。该内存不能为“written”,要终止程序,请单击“确定”,而在Windows 98里运行却正常。 解决方法:这可能是系统的兼容性问题,winXP的系统,右键“AutoRun.exe”文件,属性,兼容性,把“用兼容模式运行这个程序”项选择上,并选择“Windows 98/Me”。win2000如果打了SP的补丁后,只要开始,运行,输入:regsvr32 c:\\winnt\\apppatch\\slayerui.dll。右键,属性,也会出现兼容性的选项。

例三:RealOne Gold关闭时出现错误,以前一直使用正常,最近却在每次关闭时出现“0xffffffff”指令引用的“0xffffffff”内存。该内存不能为“read” 的提示。 解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,因此在关闭RealOne之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。

例四:我的豪杰超级解霸自从上网后就不能播放了,每次都提示“Ox060692f6”(每次变化)指令引用的“Oxff000011”内存不能为“read”,终止程序请按确定。 解决方法:试试重装豪杰超级解霸,如果重装后还会,到官方网站下载相应版本的补丁试试。还不行,只好换就用别的播放器试试了。

例五:双击一个游戏的快捷方式,“Ox77f5cdO”指令引用“Oxffffffff”内 存,该内存不能为“read” ,并且提示Client.dat程序错误。 解决方法:重装显卡的最新驱动程序,然后下载并且安装DirectX9.0。

例六:一个朋友发信息过来,我的电脑便出现了错误信息:“0*772b548f”指令引用的“0*00303033”内存,该内存不能为“written”,然后QQ自动下线,而再打开QQ,发现了他发过来的十几条的信息。 解决方法:这是对方利用QQ的BUG,发送特殊的代码,做QQ出错,只要打上补丁或升级到最新版本,就没事了。

通过上面的几个例子,可以看到,出现故障的原因有好多种,在这里把已经提到和有可能发生的原因列个表,方便查阅。

解决方法

1、内存条坏了更换内存条

2、双内存不兼容使用同品牌的内存或只用一条内存

3、内存质量问题更换内存条

4、散热问题加强机箱内部的散热

5、内存和主板没插好或和其它硬件不兼容等重插内存或换个插糟

6、硬盘有问题更换硬盘

7、驱动问题重装驱动。如果是新系统,要先安装主板驱动

8、软件损坏重装软件

9、软件有BUG打补丁或用最新的版本。

10、软件和系统不兼容给软件打上补丁或者试试系统的兼容模式

11、软件和软件之间有冲突如果最近安装了什么新软件,卸载了试试

12、软件要使用到其它相关的软件有问题重装相关软件。比如播放某一格式的文件时出错,可能是这个文件的解码器有问题

13、病毒问题杀毒

14、杀毒软件与系统或软件冲突由于杀毒软件是进入底层监控系统的,可能与一些软件冲突,卸载了试试

15、系统本身有问题有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序,像SP的补丁,最好要打上。如果还不行重装系统或更换其它版本的系统了。

使用Windows出现蓝色屏幕是经常的事,而且每每因为不清楚错误的来源而频繁重新安装系统,劳神费时。下列收集了一些windows机密码,供大家参考。

数值 叙述

0 0x0000 作业完成。

1 0x0001 不正确的函数。

2 0x0002 系统找不到指定的档案。

3 0x0003 系统找不到指定的路径。

4 0x0004 系统无法开启档案。

5 0x0005 拒绝存取。

6 0x0006 无效的代码。

7 0x0007 储存体控制区块已毁。

8 0x0008 储存体空间不足,无法处理这个指令。

9 0x0009 储存体控制区块位址无效。

10 0x000a 环境不正确。

11 0x000b 尝试载入一个格式错误的程式。

12 0x000c 存取码错误。

13 0x000d 资料错误。

14 0x000e 储存体空间不够,无法完成这项作业。

15 0x000f 系统找不到指定的磁碟机。

16 0x0010 无法移除目录。

17 0x0011 系统无法将档案移到 其他的磁碟机。

18 0x0012 没有任何档案。

19 0x0013 储存媒体为防写状态。

20 0x0014 系统找不到指定的装置。

21 0x0015 装置尚未就绪。

22 0x0016 装置无法识别指令。

23 0x0017 资料错误 (cyclic redundancy check)

24 0x0018 程式发出一个长 度错误的指令。

25 0x0019 磁碟机在磁碟找不到 持定的磁区或磁轨。

26 0x001a 指定的磁碟或磁片无法存取。

27 0x001b 磁碟机找不到要求的磁区。

28 0x001c 印表机没有纸。

29 0x001d 系统无法将资料写入指定的磁碟机。

30 0x001e 系统无法读取指定的装置。

31 0x001f 连接到系统的某个装置没有作用。

32 0x0020 the process cannot access the file because it is being used by another process.

33 0x0021 档案的一部份被锁定, 现在无法存取。

34 0x0022 磁碟机的磁片不正确。 请将 %2 (volume serial number: %3) 插入磁碟机 %1。

36 0x0024 开启的分享档案数量太多。

38 0x0026 到达档案结尾。

39 0x0027 磁碟已满。

50 0x0032 不支援这种网路要求。

51 0x0033 远端电脑无法使用。

52 0x0034 网路名称重复。

53 0x0035 网路路径找不到。

54 0x0036 网路忙碌中。

55 0x0037 the specified network resource or device is no longer available.

56 0x0038 the network bios command limit has been reached.

57 0x0039 网路配接卡发生问题。

58 0x003a 指定的伺服器无法执行要求的作业。

59 0x003b 网路发生意外错误。

60 0x003c 远端配接卡不相容。

61 0x003d 印表机伫列已满。

62 0x003e 伺服器的空间无法储存等候列印的档案。

63 0x003f 等候列印的档案已经删除。

64 0x0040 指定的网路名称无法使用。

65 0x0041 拒绝存取网路。

66 0x0042 网路资源类型错误。

67 0x0043 网路名称找不到。

68 0x0044 超过区域电脑网路配接卡的名称限制。

69 0x0045 超过网路 bios 作业阶段的限制。

70 0x0046 远端伺服器已经暂停或者正在起始中。

71 0x0047 由于连线数目已达上限,此时无法再连线到这台远端电脑。

72 0x0048 指定的印表机或磁碟装置已经暂停作用。

80 0x0050 档案已经存在。

82 0x0052 无法建立目录或档案。

83 0x0053 int 24 失败

84 0x0054 处理这项要求的储存体无法使用。

85 0x0055 近端装置名称已经在使用中。

86 0x0056 指定的网路密码错误。

87 0x0057 参数错误。

88 0x0058 网路发生资料写入错误。

89 0x0059 此时系统无法执行其他行程。

100 0x0064 无法建立其他的系统 semaphore。

101 0x0065 属于其他行程专用的 semaphore 。

102 0x0066 semaphore 已经设定,而且无法关闭。

103 0x0067 无法指定 semaphore 。

104 0x0068 在岔断时间无法要求专用的 semaphore 。

105 0x0069 此 semaphore 先前的拥有权已经结束。

106 0x006a 请将磁片插入 %1。

107 0x006b 因为代用的磁片尚未插入,所以程式已经停止。

108 0x006c 磁碟正在使用中或被锁定。

109 0x006d pipe 已经中止。

110 0x006e 系统无法开启指定的 装置或档案。

111 0x006f 档名太长。

112 0x0070 磁碟空间不足。

113 0x0071 没有可用的内部档案识别字。

114 0x0072 目标内部档案识别字不正确。

117 0x0075 由应用程式所执行的 ioctl 呼叫 不正确。

118 0x0076 写入验证参数值不正确。

119 0x0077 系统不支援所要求的指令。

120 0x0078 此项功能仅在 win32 模式有效。

121 0x0079 semaphore 超过逾时期间。

122 0x007a 传到系统呼叫的资料区域 太小。

123 0x007b 档名、目录名称或储存体标签语法错误。

124 0x007c 系统呼叫层次不正确。

125 0x007d 磁碟没有设定标签。

126 0x007e 找不到指定的模组。

127 0x007f 找不到指定的程序。

128 0x0080 没有子行程可供等待。

129 0x0081 %1 这个应用程式无法在 win32 模式下执行。

130 0x0082 attempt to use a file handle to an open disk partition for an

operation other than raw disk i/o.

131 0x0083 尝试将档案指标移至档案开头之前。

132 0x0084 无法在指定的装置或档案,设定档案指标。

133 0x0085 join 或 subst 指令 无法用于 内含事先结合过的磁碟机。

134 0x0086 尝试在已经结合的磁碟机,使用 join 或 subst 指令。

135 0x0087 尝试在已经替换的磁碟机,使 用 join 或 subst 指令。

136 0x0088 系统尝试删除 未连结过的磁碟机的连结关系。

137 0x0089 系统尝试删除 未替换过的磁碟机的替换关系。

138 0x008a 系统尝试将磁碟机结合到已经结合过之磁碟机的目录。

139 0x008b 系统尝试将磁碟机替换成已经替换过之磁碟机的目录。

140 0x008c 系统尝试将磁碟机替换成已经替换过之磁碟机的目录。

141 0x008d 系统尝试将磁碟机 subst 成已结合的磁碟机 目录。

142 0x008e 系统此刻无法执行 join 或 subst。

143 0x008f 系统无法将磁碟机结合或替换同一磁碟机下目录。

144 0x0090 这个目录不是根目录的子目录。

145 0x0091 目录仍有资料。

146 0x0092 指定的路径已经被替换过。

147 0x0093 资源不足,无法处理这项 指令。

148 0x0094 指定的路径这时候无法使用。

149 0x0095 尝试要结合或替换的磁碟机目录,是已经替换过的的目标。

150 0x0096 config.sys 档未指定系统追踪资讯,或是追踪功能被取消。

151 0x0097 指定的 semaphore事件 dosmuxsemwait 数目不正确。

152 0x0098 dosmuxsemwait 没有执行;设定太多的 semaphore。

153 0x0099 dosmuxsemwait 清单不正确。

154 0x009a 您所输入的储存媒体标 元长度限制。

155 0x009b 无法建立其他的执行绪。

156 0x009c 接收行程拒绝接受信号。

157 0x009d 区段已经被舍弃,无法被锁定。

158 0x009e 区段已经解除锁定。

159 0x009f 执行绪识别码的位址不正确。

160 0x00a0 传到 dosexecpgm 的引数字串不正确。

161 0x00a1 指定的路径不正确。

162 0x00a2 信号等候处理。

164 0x00a4 系统无法建立执行绪。

167 0x00a7 无法锁定档案的部份范围。

170 0x00aa 所要求的资源正在使用中。

173 0x00ad 取消范围的锁定要求不明显。

174 0x00ae 档案系统不支援自动变更锁定类型。

180 0x00b4 系统发现不正确的区段号码。

182 0x00b6 作业系统无法执行 %1。

183 0x00b7 档案已存在,无法建立同一档案。

186 0x00ba 传送的旗号错误。

187 0x00bb 指定的系统旗号找不到。

188 0x00bc 作业系统无法执行 %1。

189 0x00bd 作业系统无法执行 %1。

190 0x00be 作业系统无法执行 %1。

191 0x00bf 无法在 win32 模式下执行 %1。

192 0x00c0 作业系统无法执行 %1。

193 0x00c1 %1 不是正确的 win32 应用程式。

194 0x00c2 作业系统无法执行 %1。

195 0x00c3 作业系统无法执行 %1。

196 0x00c4 作业系统无法执行 这个应用程式。

197 0x00c5 作业系统目前无法执行 这个应用程式。

198 0x00c6 作业系统无法执行 %1。

199 0x00c7 作业系统无法执行 这个应用程式。

200 0x00c8 程式码的区段不可以大于或等于 64kb。

201 0x00c9 作业系统无法执行 %1。

202 0x00ca 作业系统无法执行 %1。

203 0x00cb 系统找不到输入的环境选项。 \r

205 0x00cd 在指令子目录下,没有任何行程有信号副处理程式。

206 0x00ce 档案名称或副档名太长。

207 0x00cf ring 2 堆叠使用中。

回答者: 我思故我问 - 高级经理 六级 12-9 01:24

修改答复: 我思故我问,您要修改的答复如下: 积分规则 关闭

该内存不能read written常见原因

使用Windows操作系统的人有时会遇到这样的错误信息:“0X指令引用的0x00000000内存,该内存不能written”,然后应用程序被关闭。如果去请教一些“高手”,得到的回答往往是“Windows就是这样不稳定”之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的常见原因。

一、应用程序没有检查内存分配失败

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

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

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

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

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

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

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

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

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

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

运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。

“0x”指令引用的“0x”内存。该内存不能为“read”。

“0x”指令引用的“0x”内存,该内存不能为“written”。

不知你出现过类似这样的故障吗?(0x后面内容有可能不一样。)

一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。

下面先说说硬件:

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

假如你是双内存,而且是不同品牌的内存条混插或者买了二手内存时,出现这个问题,这时,你就要检查是不是内存出问题了或者和其它硬件不兼容。如果都没有,那就从软件方面排除故障了。

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

下面我从几个例子给大家分析:

例一:打开IE浏览器或者没过几分钟就会出现"0x70dcf39f"指令引用的"0x00000000"内存。该内存不能为“read”。要终止程序,请单击“确定”的信息框,单击“确定”后,又出现“发生内部错误,您正在使用的其中一个窗口即将关闭”的信息框,关闭该提示信息后,IE浏览器也被关闭。 解决方法:修复或升级IE浏览器,同时打上补丁。看过其中一个修复方法是,Win2000自升级,也就是Win2000升级到Win2000,其实这种方法也就是把系统还原到系统初始的状态下。比如你的IE升级到了6.0,自升级后,会被IE5.0代替。

例二:在windows xp下双击光盘里面的“AutoRun.exe”文件,显示“0x77f745cc”指令引用的“0x00000078”内存。该内存不能为“written”,要终止程序,请单击“确定”,而在Windows 98里运行却正常。 解决方法:这可能是系统的兼容性问题,winXP的系统,右键“AutoRun.exe”文件,属性,兼容性,把“用兼容模式运行这个程序”项选择上,并选择“Windows 98/Me”。win2000如果打了SP的补丁后,只要开始,运行,输入:regsvr32 c:\\winnt\\apppatch\\slayerui.dll。右键,属性,也会出现兼容性的选项。

例三:RealOne Gold关闭时出现错误,以前一直使用正常,最近却在每次关闭时出现“0xffffffff”指令引用的“0xffffffff”内存。该内存不能为“read” 的提示。 解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,因此在关闭RealOne之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。

例四:我的豪杰超级解霸自从上网后就不能播放了,每次都提示“Ox060692f6”(每次变化)指令引用的“Oxff000011”内存不能为“read”,终止程序请按确定。 解决方法:试试重装豪杰超级解霸,如果重装后还会,到官方网站下载相应版本的补丁试试。还不行,只好换就用别的播放器试试了。

例五:双击一个游戏的快捷方式,“Ox77f5cdO”指令引用“Oxffffffff”内 存,该内存不能为“read” ,并且提示Client.dat程序错?

另外,站长团上有产品团购,便宜有保证

数字13是图标索引。wordicon.exe 是Word的图标文件,里面集成了多个图标。索引0表示每一个,1为第二个,以此类推。所以13表明它是第14个图标。修改这个数值,可以改变Word的文件图标。要查看这个文件具体多少个图标,可以按下面的方法操作:

首先,随便在一个文件或文件夹上点右键—创建快捷方式。然后打开这个快捷方式的属性,点“更改图标”按钮,点击“浏览”按钮,找到并打开C:\WINDOWS\Installer\{90120000-0011-0000-0000-0000000FF1CE}\wordicon.exe文件(Installer是个隐藏的系统文件夹,请先在文件夹选项中设置显示所有隐藏的文件夹和系统文件。),这时就能看到里面的图标了,里面一共有14个图标,所以想改的时候,不要把数字改太大。

我这里面使用的是第二个图标,所以在注册表里面,显示的是?C:\WINDOWS\Installer\{90110804-6000-11D3-8CFE-0150048383C9}\wordicon.exe,1 。