1999年6月19日-在此问题:

  1. 系统内部的新功能

    • SDelete v1。1
    • 字符串 v2。0
    • LoggedOn
    • Filemon v 4.13
    • DebugView/企业版3。1
    • "在 NT 网络内"
    • 6月 "NT 内部"
    • NTFrob 更新状态
    • 不是-新内容
  2. 内部资讯

    • 已释放 Numega DriverStudio
    • 6月版平台 SDK 可用
    • Win2K 系统文件保护程序 (SFP)
    • 关闭从网络打开的文件
  3. 即将推出的内容

    • "AWE"-某些 Win2K API

赞助商: WINTERNALS 软件

系统内部新闻稿由 Winternals Software 赞助,网址为: http://www.winternals.com. Winternals Software 是高级系统工具的领先开发人员和提供商,适用于 Windows NT/2K。 Winternals 软件产品包含 FAT32 for Windows NT 4.0,ERD Commander (用于 Windows NT) 和 NTRecover 的启动磁盘功能。

Winternals 软件宣布发布了 Regmon 和 Filemon Enterprise 版本。 这些实用程序提供了免费软件 Filemon 和 Regmon 的所有功能,并添加了这些强大的功能:

  • 查看远程 Win9x/NT 系统上发生的注册表和文件系统活动
  • 实时将输出记录到文件中
  • 将输出行复制到剪贴板
  • 突出显示与筛选器匹配的行
  • 同时查看来自不同计算机的输出
  • 直接打印到打印机的输出
  • 轻松撤回最近5个筛选器选择

获取订购和定价信息,网址为: http://www.winternals.com.


大家好,

欢迎使用系统内部新闻稿的第三版。 新闻稿当前包含4400个订阅者。

在最后一篇新闻稿中,我指出了 Microsoft 如何在不到 Windows 2000 (Win2K) 的情况走到了的情况。 新的 Win2K 蓝屏没有加载的驱动程序和堆栈转储信息,该信息显示在 Windows NT 先前版本的蓝屏上。 我询问你是否找到了 Microsoft 已去除有用的信息并希望他们只留下了一些内容。 响应实际上是一致的,每个回应者都 (除了一个) 了解 Microsoft 为何要实现最低的最小标准。 下面是通过 Tony Lavinio 发送的典型观点:

换句话说,这就是 Microsoft 基于其决策的客户响应:

"我不知道它,因此它必须是错误的;使其消失。

为什么它们只是删除了整个屏幕,并显示一条消息,指出 "请求插入、重新插入、从头开始"? 为什么他们要去掉源的几个线索呢?

至少在之前,如果是病毒扫描程序或碎片整理程序或有错误的驱动程序,我们就会开始搜索。

如果此工具仅在10000的范围内帮助1,但有很大的 NT 部署,则值得一提。 特别是,由于我们 .01% 支持另一种99.99% 的部分。

Who 是单独的 dissenter 吗? 这不太令人吃惊,因为它是 Microsoft 的一位字段,它是蓝屏故障报告。 下面是它们对更改的斜面,用于确认 Tony 对其原因的推理:

我在 PSS 的 NT 安装组中工作,MS (处理蓝屏故障排除) 。 我可以确保你们的大多数人都不知道要如何处理4.0 蓝屏上的信息。 我确定你是否看到了0xA 通过堆栈上的 "停止" NAIFILTR.SYS 来更新防病毒,但大多数人都不会进行该连接,并且实际上不会意识到 stop 代码和参数对它们很有用。 了解如何解释蓝屏数据的人员可能会厌恶,但遗憾的是少数。

正如我在上一新闻稿中提到的,我觉得 Microsoft 应该先携带 NT 4.0 蓝屏,并保留加载的驱动程序列表和堆栈转储。 我还认为,他们可以通过提供更多的信息(而不是更少)使蓝屏更好。 例如,为何在崩溃时不显示当前正在执行的进程的名称? 或者,更多检测错误调用传递了 faulter 的地址,而不仅仅是出错的地址呢? PSS 曾遇到过很多客户,clueless 有关蓝屏的原因是,Microsoft 从未编写有关如何阅读该文档的文档。 因此,用户无感知至少包含了 Microsoft 自己的需要肩负。

如果想要了解有关蓝屏的发生方式和 (NT 4 上的功能的详细信息 ) 蓝屏,请参阅 "我的1997年12月文章",该文章位于 Windows NT 杂志 (你可以从http://www.sysinternals.com/publ.htm).

与往常一样,请将新闻稿传递给你认为可能会感兴趣的朋友。

谢谢!

-标记

系统内部的新功能

SDELETE V1。1

在最后一篇新闻稿中,我介绍了 SDelete,这是一个安全的删除实用程序,您可以使用它来便文件数据,并清理磁盘上先前删除的数据的可用空间。 SDelete 的第一个版本不能安全地覆盖你删除的文件的名称。 文件的名称通常会显示敏感信息,使用 SDelete 删除带有泄漏名称的文件可能会导致信息泄露。 为了解决此漏洞,我已更新了 SDelete,不仅安全地覆盖文件数据,而且还能覆盖文件名。 SDelete 通过重命名文件26次来安全地删除文件名,并将文件名称中的每个字母替换为字母的连续字母,从 "A" 到 "Z"。

下载包含完整源代码的 SDelete v1。1 http://www.sysinternals.com/sdelete.htm.

字符串 V2。0

可执行文件和 Dll 通常具有嵌入的字符串,这些字符串可显示未记录的注册表值和提示未记录的功能的错误消息。 遗憾的是,大多数 Windows NT/2K 系统 dll 和 exe 都编写为使用 Unicode 字符串,而诸如 Grep 的传统字符串搜索工具仅提取 ASCII 字符串。 我在几年前编写了字符串实用工具的第一个版本,以扫描二进制文件中的 ASCII 或 Unicode 字符串。 我在我的 NT 内部研究中多次使用了它,以帮助您了解 Microsoft 不会记录这些问题。

尽管字符串始终有一个主要的缺陷,这是因为它无法将通配符表达式作为文件说明符,因此你可以在一个快照中扫描多个文件。 我希望使用此功能,以便在给定注册表值的名称的情况下,我可以轻松确定哪些系统 Dll 引用它。

最后,我已更新字符串以使用完整的通配符文件名,并对目录进行递归。 如果您指定通配符,则会自动为输出行加上一个字符串的前缀,这样您就可以执行如下操作:

strings *.dll | grep SafeBoot

查看此表达式的输出 (Grep 版本 Windows NT 资源工具包 Posix 实用程序中提供) 通知你哪些系统 dll 检查 Windows 2000 上的 SafeBoot 注册表项。 字符串还非常适用于查看新的注册表值 Win2K 系统 Dll、驱动程序和可执行文件的使用情况。 例如,我使用字符串来比较 NT 4.0 SP4 tcp/ip 堆栈中引用的注册表值 (tcpip.sys) 到 Windows 2000 TCPIP 堆栈引用的注册表值。 以下是 Win2K's TCPIP 堆栈新增的一半值, (所有 assum 都位于 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters) 下:

ReservedPorts
DefaultGatewayMetric
InterfaceMetric
TempLeaseExpirationTime
TempIpAddress
TempMask
DhcpDefaultGateway
TcpWindowSize
TcpInitialRTT
TcpDelAckTicks
EnableTrafficControl
EnableTOSetting
MaxNormLookupMemory
MaxSendSegments
MaxFreeConnections
MaxFreeTWTcbs
FFPFastForwardingCacheSize

我不会保留我的深呼吸,等待 Microsoft 记录所有堆栈的新配置参数。

可以在中下载字符串 v2。0 http://www.sysinternals.com/misc.htm.

LOGGEDON

您是否曾经想知道谁登录了远程 NT 系统? 如果是这样,则需要下载 LoggedOn。 LoggedOn 是一个简单的实用程序,它将告诉你哪些用户以交互方式登录到本地计算机或远程计算机,以及通过资源连接登录的用户 (例如,) 的文件或打印机共享。 下面是示例 LoggedOn 输出:

C:\>loggedon main

LoggedOn v1.0 - Logon Session Displayer
Copyright (C) 1999 Mark Russinovich
Systems Internals - http://www.sysinternals.com

Users logged on locally:
MAIN\Administrator

Users logged on via resource shares:
MAINDOM\MARK

Windows NT 和 Win2K 并不提供应用程序可用于确定登录到计算机的用户的 API,但 LoggedOn 通过查看加载到系统 HKEY\USERS 中的注册表项注册表树。 以交互方式登录的任何用户的配置文件都将加载到此密钥中,配置文件的名称将标识该配置文件的关联用户帐户的 SID (安全 ID) 。 例如,如果打开 Regedit,并在下查看 HKEY_USERS ,你会看到类似于下面的内容:

HKEY_USERS\.DEFAULT\S-1-5-21-734676951-386466661-1233803906-500

此处仅有一个用户以交互方式登录。 你可以告诉其本地管理员或域管理员,因为 RID (相对 ID) 为500,这是管理员帐户的 RID NT 预留。

通过使用允许一个系统查看另一个系统的注册表的 API,LoggedOn 读取远程计算机的 HKEY_USERS 密钥,并将其找到的 SID 转换为帐户名称。 若要确定通过资源共享登录的用户,LoggedOn 使用 SDK 中记录的 NET API。 Net 命令行工具广泛使用了 NET API。 LoggedOn 访问远程系统的注册表的副作用是,在 中运行 LoggedOn 的帐户将始终显示为通过 LoggedOn 输出中的资源共享登录到远程系统。

可以在 下载具有完整源代码的 LoggedOn http://www.sysinternals.com/misc.htm.

FILEMON V4.13

Filemon v4.13 刚刚发布,这是一项更新,反映对 Windows NT filer 驱动程序的更改,并更正我无意中引入到 4.12 驱动程序中的 bug。 4.13 筛选器驱动程序有以下更改:

  • 它使用资源同步类型来保护其某些内部数据结构
  • 它处理新的 Win2K IRP,IRP_MJ_PNP_POWER

资源同步类型几乎未记录在 Windows NT 4.0 和 Win2K 设备驱动程序开发工具包 (SDK) 。 设计指南甚至未提及资源,而其功能记录在"执行支持例程"部分下的"参考"中。 资源是一种有用的机制,用于保护可同时由不同线程读取,但在更新期间需要线程独占访问的数据结构。 因此,它们是读取器/编写器锁,由读取器进行共享访问和编写器进行独占访问。 文件系统驱动程序广泛使用资源,因此我认为更新 Filemon 以在适当的位置使用它们是合适的。

Filemon v4.13 还处理新的 IRP_MJ_PNP_POWER IRP,以便它是在 Win2K 下运行时的电源和即插即用友好筛选器驱动程序。 处理此类型的 IRP 时,文件系统筛选器驱动程序的唯一要求是将它们传递给筛选器附加到的文件系统设备。

可以在 下载包含完整源代码的 Filemon v4.13 http://www.sysinternals.com/filemon.htm.

DEBUGVIEW/企业版 V3.1

DebugView/企业版 是一种通用的调试输出监视器,可用于捕获 Win32 程序或内核模式设备驱动程序在 Win95、Win98、WinNT 和 Win2K 下生成的本地或远程调试输出。 但是,在用户使用设备驱动程序遇到崩溃的环境中,其有用性受到限制 - 所有调试输出 DebugView 在崩溃丢失之前捕获。 最新版本的 DebugView/企业版解决了 Windows NT/2K 上的问题。 如果用户正在捕获设备驱动程序生成的内核模式输出,并且用户已配置 NT 以保存故障转储,则 DebugView/企业版 可以在系统重新启动时从转储文件中提取调试输出。 使用 DebugView/企业版的 Edit|"进程故障转储"菜单选择,以让它扫描内存转储以找到调试输出。 此功能使用户能够发送回包含驱动程序在崩溃前生成的调试输出的文本文件。

在 下载 debugView/企业版 v3.1http://www.sysinternals.com/debugview.htm.

"NT 网络内部"

我 1999 年 3 月Windows NT杂志的"NT 内部"列现已上线。 从上到下了解 NT 的网络体系结构,包括它实现哪些 API、协议堆栈如何与 API 交互,以及硬件供应商如何编写网络驱动程序来使用协议驱动程序。 此外,请了解 Win2K 网络中的一些新功能,包括反化 NDIS 和 ATM 支持。

在 上在线阅读"NT 网络内部"和其他过去的 NT 内部列 http://www.sysinternals.com/publ.htm.

6 月"NT INTERNALS"

我的《Windows NT杂志》的 6 月发行内容是"在 EFS 内部,第 1 部分"。 本文介绍 Microsoft 加密文件系统 (EFS) 的体系结构,并详细介绍 EFS 加密文件时遵循的步骤。 EFS 为 Win2K NTFS 驱动器提供透明加密工具,Microsoft 专门开发了它,以解决 NTFSDOS 工具读取 NTFS 文件的能力,而不考虑其安全性。 此列将在三个月内在线提供。

两篇新闻稿之前,我讨论了如何取消记录备份和还原加密文件所需的 EFS API。 遗憾的是,当前版本的 MSDN 中仍未记录这些 API。 但是,我了解到 Microsoft 正在将标记为"Microsoft 机密"的文档发送到其合作伙伴和备份软件供应商。 此外,Microsoft 文件系统项目经理 David Golds 在达拉斯最近的 Microsoft TechEd 会议上介绍了 Win2K 的文件系统增强功能。 在演示文稿中,可以在 上在线查看的幻灯片,他提到备份 API 未记录,但你可以 bug 他 http://www.teched99.com/slides/1-337.ppt 你想要文档。 遗憾的是,幻灯片上未列出他的电子邮件地址。

请访问 http://www.winntmag.com Windows NT 杂志订阅信息。

NTFROB 更新状态

NTFrob 是我在数年前发布的实用工具,可用于在 NT 4.0 上精确配置前台和后台过程的量子长度。 NTFrob 修改 NT 内核内部的数据结构,因此它高度特定于 Service Pack。 自 NT 4.0 Service Pack 5 发布以来,我一直被询问何时要发布 NTFrob v1.5 的查询,即 SP 5 更新。 答案是即将更新 - 我正在等待 Microsoft 向 MSDN 订阅者提供 SP5,包括调试信息。 我需要调试信息来更新新 Service Pack 的 NTFrob。

可以在 下载 NT 4 SP0-4 的 NTFrob http://www.sysinternals.com/ntfrob.htm.

非 SO-NEW 内容

几个月前,我在系统内部发布 Win9x/NT/2K 串行和并行端口监视器。 借助 Portmon,你可以准确了解应用程序与串行和并行端口的交互方式,包括它们发送和接收的数据。 可以使用它来监视拨号会话、单环链接串行连接或打印机活动。 Portmon 一直很热门,最近从 Ziff-用户的软件库(可能的最高评级)中获得了 5 星。 获得 5 星的其他系统内部工具包括 Regmon、NTFSDOS 和 BlueSave。

在 下载 Portmon http://www.sysinternals.com/portmon.htm.

INTERNALS 新闻

DRIVERSTUDIO 已发布

CompuWare 的 NuMega 实验室已发布 DriverStudio,这是一个适用于 Windows 9x/NT/2K 设备驱动程序开发人员的综合工具包。 它包括 SoftICE 4.0、适用于驱动程序的 BoundsChecker、VtoolsD、DriverAgent、DriverWorks、适用于驱动程序的 FieldAgent,并且将来将添加适用于驱动程序的 TrueTime 和适用于驱动程序的 TrueCoverage。 如我在上一份新闻稿中说,这是一个必须拥有开发人员工具包。 NuMega 还推出了一个面向设备驱动程序开发人员的网站,名为"Driver Central"- http://www.numega.com/drivercentral/default.asp.

6 月平台 SDK 已发布

现在可以从 下载 Microsoft 平台 SDK 的 6 月版 http://www.msdn.microsoft.com/developer/sdk/platform.asp.

WIN2K 系统文件保护 (SFP)

NT 系统管理员和用户的最大权限之一是 NT 的"DLL 错误"。 DLL 死包是许多应用程序使用它们捆绑的版本更新关键系统 DLL 的结果。 应用程序通常会这样做,以便可以保证它们正常工作,但是,当它们替换 DLL 时,会多次通过安装不兼容的版本来中断其他应用程序,甚至将 DLL"更新"到较旧版本。

Microsoft 通过引入系统文件保护程序 (SFP) 解决了 Win2K 中的 DLL 版本) 。 实际上,它的名称很快就会更改为 Windows WFP (WFP) ,但从 Beta 3 (版本 2031) 它仍是 SFP。 SFP 在名为 sfc.dll DLL 中实现,Winlogon 进程 (winlogon.exe) 系统启动时加载。 SFP 包含一个内置列表,其中包含大约 3000 个标准 Win2K 系统 DLL、可执行文件 (.exe) 、安装文件 (.inf) 、驱动程序 (.sys) 以及安装在 30-40 个不同目录中的字体 (.fon) 文件。 当 SFP 初始化时,它会对包含其保护的文件的每个目录执行 change-notify 目录操作。 当检测到文件被篡改时,它会弹出一个对话框来通知当前用户,甚至将 写入事件日志,将修改后的文件替换为 %systemroot%\system32\dllcache 中存储的备份。 如果 SFP 在 dllcache 中查找的备份文件缺失或已被篡改,则 SFP 会从 Win2K 安装介质中检索新副本。

若要了解 SFP 保护的文件,可以使用本新闻稿中其他部分中提到的 Strings 实用工具来转储 %systemroot%\system32\sfc.dll 中嵌入的 Unicode 字符串名称。

可以更新系统文件的唯一实用工具是 hotfix.exe、service pack (update.exe) 、升级安装和 Win2K 更新服务。 这些工具如何绕过 SFP? 它们通过调用导出的 sfc.dll SfcTerminateWatcherThread 来暂时禁用它,并确保反映 dllcache 子目录中的更新。 请注意,Win2K 要求所有系统文件都由 Microsoft 进行数字签名,因此通常不可能使用你自己的任意版本更新系统文件。

Win32 程序可以使用 FindFirstChangeNotification 和 FindNextChangeNotification Win32 API 监视目录中的更改。 但是,这些 API 只是通知应用程序某些内容已更改;它们不会告诉应用程序更改了哪些信息。 因此,应用程序需要扫描整个目录,以确定哪些文件或子目录可能已更改。 SFP 使用 NT 本机 API 执行更改通知请求,其中 NT 准确告知它在受监视目录中更改的文件或子目录。 SFP 使用的函数名为 NtNotifyChangeDirectoryFile,与 NT 的 90% 本机 API 一样,它未记录。 在不久的将来,在"系统内部"中查找一个小程序,该小程序演示如何使用 NtNotifyChangeDirectoryFile。

我的 9 月"NT 内部"列"In Win2K Reliability Enhancements, Part 2"更详细地介绍了 SFP。

关闭从网络打开的文件

我从系统内部访问者收到的最常见问题之一是"如何关闭用户从网络打开的文件?"如果用户远程打开了文件或目录,则你无法在本地删除、重命名或更新文件或目录。 类似问题是"如何实现用户从网络打开哪些文件?"这两个问题都使用 Windows NT/2K 随附的 Net 命令行实用工具进行解答。 若要查看打开的文件,只需键入"net file"。 你将获得打开的文件名、相应的文件名标识符以及已打开文件的用户名的列表。 若要关闭看到打开的文件之一,请键入 net file <id> /close 。 若要查看在本地打开的文件,可以使用我的 NTHandle 或 HandleEx 工具。

平台 SDK 和 MSDN 库中记录了 Net 命令的文件查看和关闭功能基础的 API。 使用 NetFileEnum API 枚举打开的文件,使用 NetFileClose API 关闭打开的文件。 API 实际上允许枚举远程服务器上打开的文件,这是 Net 命令不允许的。

NTHandle 位于 http://www.sysinternals.com/nthandle.htm. HandleEx 位于 http://www.sysinternals.com/handleex.htm.

即将提供哪些功能

AN "AWE"-SOME WIN2K API

Win2K 引入了名为 AWE (地址窗口扩展的新 API) 内存密集型应用程序可以使用该 API 直接访问和管理大量物理 RAM- 甚至超过 3GB,这是 Windows NT 应用程序在其虚拟地址空间中可以解决的 RAM 上限。 事实上,如果 x86 系统具有 PSE (页面大小扩展) 且 RAM 超过 4GB,则应用程序可以使用 AWE 来利用计算机的所有内存。 因此,此 API 非常适合内存不足的应用程序,如 Web 服务器和数据库服务器。 下次我将告诉你如何使用来自 Win32 应用程序和设备驱动程序的 API。

虽然我的主题是内存消耗型应用程序,但以下提示适用于编写将文件缓存为 Web Server (的应用程序) 。 缓存Windows NT将其缓存内存划分为名为"views"的 256KB 槽。 如果缓存的大小小于 256KB 的文件,则缓存管理器仍必须为该文件分配整个 256KB 槽,这意味着缓存的虚拟内存部分会浪费。 因此,在你自己的应用程序的虚拟内存中缓存大小小于 256KB 的文件,并依赖文件系统缓存大于 256KB 的文件通常更高效。 IIS 5.0 使用此技巧。


感谢你阅读系统内部信息通讯。

发布时间:1999 年 6 月 19 日,星期六下午 7:14(由 ottoh 发布)

[新闻稿存档 ^][ 第 1 卷 ,第 2 卷][第 1 卷,第 4 卷 ]

[新闻稿存档 ^][ 第 1 卷 ,第 2 卷][第 1 卷,第 4 卷 ]

系统内部信息新闻稿第 1 卷,第 3 号

http://www.sysinternals.com
版权所有 (C) 1999 Mark Russin中