在启动和故障恢复,中显示"内核内存转储"但在 Windows 2000 或 Windows Server 2003 中执行完全内存转储

文章翻译 文章翻译
文章编号: 885117 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

症状

您可能会遇到一个或多个以下症状:
  • 当试图查看基于 Microsoft Windows 2000 的计算机上的内存转储时可能已损坏的内存转储文件,您不能打开该文件。
  • 启动和故障恢复 对话框中的 写入调试信息 列表设置设置为 内核内存转储,但基于 Windows 2000 的计算机上或基于 Microsoft Windows Server 2003 的计算机上执行完全内存转储。

原因

如果满足下列所有条件都都为真,则可能会发生此问题:
  • 您已经在您的计算机以 2 千兆字节 (GB) 或多个增加内存的量。

    注意内存转储文件会被破坏基于 Windows 2000 的计算机上,如果您增加到 4 GB 或更多内存。
  • 已描述的修补程序安装在 Microsoft 知识库文章 820361 或已安装安全修补程序 ms04-011 中描述的修补程序。

    有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    835732对于 Microsoft Windows ms04-011: 安全更新
  • CrashDumpEnabled 条目,在注册表中的值已设置为 0x1。
当您添加到正在运行 Windows 2000 或 Windows Server 2003 的计算机的内存时,CrashDumpEnabled 注册表项的值不会更改反映出更多的内存量。 要由 Windows 完成完全内存转储时,值 0x1 被分配给 CrashDumpEnabled 注册表项。要在完成 windows 内核内存转储时,值 0x2 被分配给 CrashDumpEnabled 注册表项。当您增加到超过 2 GB 运行 Windows 的计算机上的内存量时,预期完全内存转储设置将进行更改,以设置 CrashDumpEnabled 注册表项和在 启动和故障恢复 对话框中设置 写入调试信息 列表中,内核内存转储。

例如对于您在具有 2 GB 的内存的计算机上安装 Windows 时,系统属性启动和故障恢复 对话框中的 写入调试信息 列表设置时 完全内存转储。对应的 CrashDumpEnabled 注册表项设置为 0x1 值。

如果您添加到运行 Windows,使总内存超过 2 GB 的计算机的内存,写入调试信息 列表设置更改为 核心内存转储。但是,CrashDumpEnabled 注册表项将保留 0x1 值。

如果计算机意外,停止和内存转储发生,IopReadDumpRegistry() 函数从注册表中读取 CrashDumpEnabled 条目的值。 但是,IopReadDumpRegistry() 函数有一个硬编码限制,将重写的 0x1 注册表值,并将执行核心内存转储,如果检测到该函数,该服务器有多个 2 GB 的内存。 因此,如果将停止服务器的完全内存转储而不被执行核心内存转储。

上一台基于 Windows 2000 的计算机中安装修补程序 820361 或 $ 安全修补程序 ms04-011 时,则将从 IopReadDumpRegistry() 函数中删除了硬编码的 2 GB 的内存限制。 因此,如果内存增加到超过 2 GB 的计算机中,Windows 2000 将尝试创建完全内存转储的核心内存转储而不是,如果计算机意外停止。

如果您增加到 4 GB 或更多基于 Windows 2000 的计算机上内存,Windows 2000 不能执行一个完整的内存转储和内存转储文件已损坏。

注意Windows Server 2003 可以执行完全内存转储,不管安装在计算机中的内存量。例如对于假定 启动和故障恢复 设置和 CrashDumpEnabled 注册表项设置为分别执行核心内存转储和 $ 完全内存转储。如果您的计算机有 4 GB 的内存完全内存转储所发生的如果您有一个大不足,无法在系统分区上的页面文件。分页文件必须是物理内存加上 1 兆字节 (MB) 的大小。

CrashDumpEnabled 注册表项位于以下注册表子项中:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

替代方法

若要更正在 Windows 2000 中的 写入调试信息 列表中显示的修补程序

若要解决该错误 写入调试信息 列表显示问题,基于 Windows 2000 的计算机上应用 837297 的知识库文章中描述的修补程序。 应用此修补程序后,设置为 写入调试信息 列表中的注册表值与同步。如果您的计算机有超过 2 GB 的内存,并且 CrashDumpEnabled 注册表项被赋予值 0x1 写入调试信息 列表中选中了 完全内存转储 选项。如果 CrashDumpEnabled 注册表项不被赋予值 0x1,完全内存转储 选项不会显示在 写入调试信息 列表中。

有关此修补程序的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
837297创建故障内存转储文件是从 Windows 2000 启动和故障恢复设置中所选类型的不同

若要更正 Windows Server 2003 中的 写入调试信息 列表中显示的修补程序

要包括在 Windows Server 2003 Service Pack 1 中安排 837297 的知识库文章中描述的修复程序的 Windows Server 2003 版本。

若要强制 Windows 2000 的 4 GB 的内存写入核心内存转储的 Microsoft Visual Basic 脚本

若要强制具有 4 GB 或更多的内存要编写仅核心内存转储的基于 Windows 2000 的计算机,您可以使用下面的 Visual Basic 脚本。

Microsoft 提供的编程示例只,用于说明不附带任何明示或暗示保证。这包括,但不限于对适销性或针对特定用途的适用性的暗示的担保。本文假定您熟悉演示了正在使用的编程语言以及用于创建和调试过程的工具。Microsoft 支持工程师可以帮助解释某个特定过程的功能,但他们不会修改这些示例以提供额外的功能或构建过程来满足您的具体要求。
########## Start of VBS script ########## 
 
On Error Resume Next
 
Const ForAppending=8
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLogFile = objFSO.OpenTextFile("c:\memoryCheck.txt", ForAppending, True)
 
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    
Set colOperatingSystems = objWMIService.ExecQuery _
    ("Select * from Win32_OperatingSystem")
    
For Each objOperatingSystem in colOperatingSystems
    OSNum="5.0.2195"
     csName=objOperatingSystem.CSName
 
    objLogFile.Write csName
    objLogFile.Writeline
                 
    objLogFile.Write objOperatingSystem.Caption & " " & objOperatingSystem.Version
    objLogFile.Writeline
    
    objMemory = objOperatingSystem.TotalVisibleMemorySize
    objLogFile.Write "Memory Size:" & objMemory& "KB"
    objLogFile.Writeline
 
    Set wshell = CreateObject("WScript.Shell")
    crashControl = Wshell.RegRead("HKLM\System\CurrentControlSet\Control\CrashControl\CrashDumpEnabled")
    objLogFile.Write "CrashDumpEnabled:" & crashControl 
    objLogFile.Writeline
 
    'verify whether os is 2000 server
    If (InStr(1,objOperatingSystem.Version,OSNUm)>1) and (objOperatingSystem.ProductType >1) Then 
                 objMemory = objOperatingSystem.TotalVisibleMemorySize
                     'verify whether menory is >4G
                      If objMemory >= 4194304 Then
                          'modify registry "CrashDumpEnabled" value to 2 and get the CSName if value is 1
                          If crashControl=1 Then
                               Const HKEY_LOCAL_MACHINE = &H80000002
                               Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_ 
                               strComputer & "\root\default:StdRegProv")
                               strKeyPath = "System\CurrentControlSet\Control\CrashControl"
                               strValueName = "CrashDumpEnabled"
                               dwValue = 2
                               oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue
                               objLogFile.Write "CrashDumpEnabled has been modified from 1 to 2"
                               objLogFile.Writeline
          Wscript.Echo "CrashDumpEnabled has been modified from 1 to 2"
                         End  If 
                       End If                                      
    End If  
Next
objLogFile.Close
 
########## End of VBS script ##########

更多信息

下表显示发生的故障转储和 $ 写入调试信息 设置如何显示 启动和故障恢复 对话框中的类型。这些项取决于所指派给 CrashDumpEnabled 注册表项和计算机中安装的内存量的值。

Windows 2000 之前安装修复程序 820361、 更新前安装 ms04-011,或更新前安装 891861

注册表值 0x1

收起该表格展开该表格
内存量2 GB 或更少2 GB 的 4 GB4 GB 或更多
转储类型执行完成内核 内核
用户界面显示完成内核内核

注册表值 0x2

收起该表格展开该表格
内存量2 GB 或更少2 GB 的 4 GB4 GB 或更多
转储类型执行内核内核内核
用户界面显示内核内核内核

在安装 Windows 2000 在安装更新 ms04-011 之后安装修补程序 820361 后或更新 891861 后

注册表值 0x1

收起该表格展开该表格
内存量2 GB 或更少2 GB 的 4 GB4 GB 或更多
转储类型执行完成完成损坏完成
用户界面显示完成内核内核

注册表值 0x2

收起该表格展开该表格
内存量2 GB 或更少2 GB 的 4 GB4 GB 或更多
转储类型执行内核内核内核
用户界面显示内核内核内核

Windows Server 2003 之前安装更新 ms04-011 之前,或安装 Service Pack 1 之前安装修补程序 820361

注册表值 0x1

收起该表格展开该表格
内存量2 GB 或更少2 GB 的 4 GB4 GB 或更多
转储类型执行完成完成 完成
用户界面显示完成内核内核

注册表值 0x2

收起该表格展开该表格
内存量2 GB 或更少2 GB 的 4 GB4 GB 或更多
转储类型执行内核内核内核
用户界面显示内核内核内核

Windows Server 2003 之后安装更新 ms04-011 后,或安装 Service Pack 1 后安装了修补程序 820361

注册表值 0x1

收起该表格展开该表格
内存量2 GB 或更少2 GB 的 4 GB4 GB 或更多
转储类型执行完成完成完成
用户界面显示完成内核内核

注册表值 0x2

收起该表格展开该表格
内存量2 GB 或更少2 GB 的 4 GB4 GB 或更多
转储类型执行内核内核内核
用户界面显示内核内核内核

属性

文章编号: 885117 - 最后修改: 2006年10月30日 - 修订: 4.2
这篇文章中的信息适用于:
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
关键字:?
kbmt kbtshoot kbprb KB885117 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 885117
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com