1

Windows 中的用户模式转储收集功能有据可查。只要创建了LocalDumpsunder 键HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting,系统上的每个应用程序崩溃都会使用默认设置生成核心转储。它下面的一个子项,以我感兴趣的进程的可执行文件命名,正在覆盖全局(默认)设置,我只是名义上得到故障转储,在我指定的位置完全内存打嗝。

但是,在文档中显然没有设置LocalDumps可以告诉系统不要创建转储,这样我就可以为我的服务的子键覆盖一个。在我们的环境中,有多个服务进程在多个身份下运行,因此将有许多核心转储分散在所有身份的%LOCALAPPDATA%\CrashDumps目录中,这是不必要的。这些是无人值守的服务器,更多的垃圾意味着更多的脚本清理。

是否有记录的方法可以默认为所有程序禁用核心转储,并仅对一个程序覆盖禁止?

据记录,如果崩溃进程的身份不可写该位置,则不会创建转储,但我也不希望它们用于 LocalSystem 服务,而且这个人可以在任何地方写。此外,如果指向无效的文件路径,似乎不会创建转储。DumpFolder为了让它更不那么老套,我将它设置为NUL设备命名空间中的设备(:代表下面的“键下的值”):

LocalDumps:DumpFolder=\\.\NUL
LocalDumps:DumpCount=1
LocalDumps\myservice.exe:DumpFolder=C:\Program Files\myservice\data\crash_dumps
LocalDumps\myservice.exe:DumpType=2
LocalDumps\myservice.exe:DumpCount=5

这表面上适用于 Server 2012、2012R2 和 2016。但我必须确保下一次更新不会改变这种(未记录的)行为。

4

0 回答 0