1、“文件和磁盘实用程序”系列共包含 24款软件(实为 23款,“PsFile”和“PsTools”为不同名称同一款软件)。一、AccessChk简介为了确保创建安全的环境,Windows 管理员通常需要了解特定用户或用户组对文件、目录、注册表项和 Windows 服务等资源具有哪种访问权限。AccessChk 能够通过直观的界面和输出快速回答这些问题。安装AccessChk 是控制台程序。将 AccessChk 复制到可执行路径。键入“accesschk”可显示其使用语法。AccessChk 可在 Windows Vista、Win2K、Windows XP 和 Server 2003(包括 x
2、64 版本的Windows)上运行。 用法用法:用法:accesschk -s-e-r-w-n-v-k-p-c|-d 用户名 -c Name 是 Windows 服务,例如 ssdpsrv(指定“*”可显示所有服务)-d仅处理目录-e仅显示显式设置的完整性级别(仅限于 Windows Vista)-k Name 是注册表项,例如 hklmsoftware-n 仅显示没有访问权限的对象-p Name 是进程名或 PID,例如 cmd.exe(指定“*”作为 name 可显示所有进程)-q省略标语-r仅显示具有读取访问权限的对象-s递归-v详细(包括 Windows Vista 完整性级别)-w仅
3、显示具有写入访问权限的对象如果指定用户名或用户组名,则 AccessChk 将报告该帐户的有效权限;否则,它将转储安全描述符。默认情况下,路径名被解释为文件系统路径。对于每个对象,AccessChk 在帐户具有读取、写入访问权限时分别输出 R、W,在帐户没有任何访问权限时不输出任何内容。-v 开关可使 AccessChk 转储授予帐户的特定访问权限。示例以下命令将报告 Power Users 帐户对 WindowsSystem32 中的文件和目录具有的访问权限:accesschk “power users“ c:windowssystem32以下命令显示 Users 组的成员对哪些 Windo
4、ws 服务具有写入访问权限:accesschk users -cw * 查看特定帐户对 HKLMCurrentUser 下的哪些注册表项没有访问权限:accesschk -kns austinmruss hklmsoftware查看 HKLMSoftware 项的安全性:accesschk -k hklmsoftware查看 Vista 中 UsersMark 下的所有具有显式完整性级别的文件:accesschk -e -s c:usersmark下载 AccessChk (46 KB)二、AccessEnum简介尽管基于 Windows NT 的系统利用了灵活的安全模型,从而可以对安全和文件
5、权限进行完全控制,但管理权限以使用户对文件、目录和注册表项具有适当的访问权限却可能很困难。没有可用来快速查看用户对目录树或注册表项树的访问权限的内置方法。 AccessEnum 使您片刻之内即可全面了解文件系统和注册表安全设置,必要时它可以成为帮助您查找安全漏洞和锁定权限的理想工具。 AccessEnum 可在 Windows NT/2000/XP/2003 上运行。工作原理AccessEnum 使用标准的 Windows 安全 API 向其列表视图中填写读取、写入和拒绝访问权限信息。 下载 AccessEnum (51 KB)下载 AccessEnum 汉化版(59 KB)三、CacheSe
6、t介绍CacheSet 是一个小程序,允许您处理系统文件缓存中的工作集参数。与 CacheMan 不同,CacheSet 可以在所有版本的 NT 上运行,而且在不对新 Service Pack 版本进行修改的情况下也可运行。除了使您能够控制工作集大小的最小值和最大值,它还允许您重置缓存的工作集,强制它在必要时从一个最小的起点开始增长。仍然与 CacheMan 不同的是,对CacheSet 的更改会对缓存的大小立即产生影响。本文包含完整的源代码。 使用 CacheSet 对系统缓存的大小进行性能优化的方式,在用 CacheMan 时如果不调整内部变量就无法做到。 注意:要在 NT 4.0 Ser
7、vice Pack 4 上使用 CacheSet,您必须拥有“增加配额”的权限(管理员账户默认拥有此权限)。CacheSet 已经获得更新可启用此权限,因此它可以在SP4 上运行。 安装和使用CacheSet 可以在已发布的所有 NT 版本上运行。启动后,它显示系统文件缓存的当前大小(每秒更新两次)、最大值(上一次重新启动后的最大值),并允许您设置新工作集大小的最小值和最大值。 设置新的大小输入新的最小值和最大值,单击“Apply”(应用)按钮即可。如果出现错误,那么应是以下情况之一:您输入的最大值小于最小值,或您输入的最小值小于系统工作集大小的最小值,或者您输入的最大值大于系统工作集大小的最
8、大值。请调整您输入的值,然后再试一次。 您可能注意到缓存的大小立即发生变化,然后迅速缩小或增大。这是因为系统每秒自动修剪工作集一次。释放出来的缓存页仍在内存中,但可以迅速被放弃,由其他需要更多内存的程序使用。类似地,当应用程序访问文件系统数据时,缓存可以很容易重新获得页。 重置以前的值任何时候,只需单击“重置”(Reset) 按钮,您即可恢复最后一次启动 CacheSet 时缓存的工作集的活动值。 清除缓存的工作集按下“清除”(Clear) 按钮即可强制缓存释放它的所有页。请注意,缓存在需要时可以重新增大,这与刷新缓存不同 - 分配给它的页面将可以由其他程序使用,并可以被缓存回收。使用命令行界
9、面您可以在 CacheSet 的命令行上输入工作集大小的最小值和最大值。CacheSet 将自行应用这些新的值。这样,您可以将 CacheSet 添加到“开始”(Start) 程序组以便在每次启动时自动设置缓存的大小。 用法:CacheSet 工作集最小值 工作集最大值工作原理CacheSet 使用一个 NtQuerySystemInformation 调用来获取关于缓存设置的信息以及NtSetSystemInformation 以设置新的大小调整信息。进程的工作集信息为 NT 的内存管理器提供指导原则,说明多少页的物理内存应该分配给应用程序。由于这些是指导原则,因此可能出现这样的情况,即内存
10、管理器将某工作集的大小增大到超过最大值,或将其缩小到小于最小值。但是,设置是将会影响整体分配的因素,也因此会影响到应用程序的响应性。对于 CacheSet 而言,应用程序就是文件系统缓存。 NtSetSystemInformation 在内部调用 MmAdjustWorkingSetSize,后者会增大应用程序的工作集或对其进行修剪。如果传递给 MmAdjustWorkingSetSize 的第三个参数是 1,系统缓存的工作集将得到调整,否则调整将发生在当前过程上(系统信息调用只影响系统缓存)。将 -1 作为最小值和最大值传递将导致 MmAjustWorkingSetSize 执行工作集清除操
11、作,释放应用程序工作集中的所有页面。 安全漏洞关于 CacheSet 用来完成工作的接口,尤其有意思的一点是,它不需要特定的权限来调用。因此,您甚至可以用来宾帐户运行 CacheSet,这一点很难否认不是一种安全漏洞,因为这种情况下,任何人都可以影响系统缓存的大小调整策略。 更新:自 NT 4.0 Service Pack 4 起,微软已经堵住了此漏洞,要求更改缓存工作集的账户拥有“增加配额”权限。默认情况下,管理员用户和组账户拥有此权限。下载 CacheSet (44 KB)四、Contig简介市场上有许多 NT 的磁盘碎片整理程序,包括 Winternals Defrag Manager。
12、这些工具对执行常规磁盘碎片整理都很有用,但虽然大多数文件都可由这些实用程序进行碎片整理,有些文件则未必。此外,很难确保频繁使用的特定文件能得到碎片整理 - 由于应用的碎片整理产品所使用的碎片整理算法所特有的原因,这些文件可能仍然是零碎的。最后,即使所有的文件都得到碎片整理,随后对关键文件的更改可能导致他们变得零碎。只有通过运行彻底的碎片整理操作,才可能指望他们再次得到碎片整理。 Contig 是一个单个文件碎片整理程序,其目的是使磁盘上的文件保持连续。对于持续被碎片化的文件,或者如果您希望确保碎片数量尽量少,它可以完美地迅速优化文件。 安装和使用Contig 可以在 NT 4.0 或更高版本上
13、运行。Contig 可以用来整理现有文件的碎片,或者创建指定大小和名称的新文件,并优化其在磁盘上的位置。Contig 使用标准的 Windows碎片整理 API,因此它不会导致磁盘损坏,即使您在运行时终止它。要使现有的文件保持连续,请按如下方式使用 Contig:用法:contig -v -a -q -s 文件名使用 -v 开关可以使 Contig 打印出所执行的文件碎片整理操作的信息。如果您只希望看到一个或多个文件的碎片化程度,请使用 -a 开关令 Contig 分析碎片。使用 s 开关,可以在用通配符指定文件名时递归执行子目录处理。例如,要对 c:winnt 下的所有 DLL文件进行碎片整
14、理,您可以输入“contig -s c:winnt*.dll”。-q 开关覆盖 -v 开关,使 Contig 在“静默”模式下运行,此时碎片整理过程中打印出的唯一内容就是摘要信息。要在创建新文件后即完成碎片整理,请按如下方式使用 Contig: 用法:contig -v -n 文件名长度工作原理Contig 使用本机 Windows NT 中与 NT 4.0 一起推出的碎片整理支持(有关详细信息,请参见我的关于碎片整理 API 的文档)。它首先扫描磁盘,收集关于可用区域的位置和大小信息。然后,它确定相关文件的位置。然后,Contig 根据可用区域和文件当前所包含的碎片数量,决定文件是否可以优化
15、。如果文件可以优化,它将被移入磁盘的可用空间。 下载 Contig (55 KB)五、DiskExt简介DiskExt 展示了对 IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS 命令的使用,该命令返回有关某卷的分区位于哪个磁盘(多分区磁盘可以驻留在多个磁盘上),以及分区位于磁盘上的什么位置等信息。 下载 DiskExt (40 KB)六、DiskMon简介DiskMon 是一种应用程序,记录和显示 Windows 系统上的所有硬盘活动。您也可以最小化DiskMon 到您的系统任务栏,在此它就象磁盘灯一样工作,有读盘活动时显示绿图标,有写盘活动时则显示红图标。 Disk
16、Mon 可以在 NT 4.0 或更高版本上运行。 安装和使用安装 DiskMon 的过程极其简单,解压缩之后键入“diskmon”即可。在 Windows NT 中,GUI 动态加载驱动程序(根据 Windows NT DDK 中的 instdrv 样本代码),而后者则开始监控所有硬盘。在 Windows 2000 和更高版本中没有驱动程序组件:GUI 依靠内核事件跟踪来获取磁盘活动。菜单和工具栏按钮可用于禁用事件捕获、控制列表视图的滚动以及将列表视图中的内容保存到 ASCII 文件中。 要使 DiskMon 在系统任务栏中象磁盘灯一样工作,请选择“Options|Minimize to Tr
17、ay”(选项|最小化到任务栏)菜单项,或者用“/l”(小写 L)命令行开关启动 DiskMon,如diskmon /l。要重新激活 DiskMon 窗口,双击 DiskMon 任务栏图标。要在任务栏中创建Diskmon 的快捷方式,请在您的 Program FilesStartup 文件夹中创建一个快捷方式,编辑快捷方式的属性,设定其“Target”(目标)指向可执行文件,将路径放在引号内而开关则放在引号外: “C:Sysinternals ToolsDiskmon.exe“ /l 读与写的偏移量以扇区表示(512 字节)。事件可以按持续时间来计时(以微秒计),或者按照启动时的绝对时间来标记。
18、“History Depth”(历史记录深度)对话框可以用来指定将在 GUI 中保存的最大记录数(0 代表无限制)。 Windows NT 4 实施如果使用标准的过滤技术,那么动态载入的驱动程序(如 DiskMon)将不可能附加到硬盘设备对象并看到源自文件系统的请求。这是因为文件系统驱动程序在系统初始化时打开磁盘设备,并且与 I/O Manager(输入/输出管理器)不同的是,文件系统驱动程序将 IRP直接发送给这些设备。I/O Manager 允许文件系统过滤器驱动程序在初始化后附加到文件系统设备,原因是它在每次即将发送 Irp 到文件系统时会检查附加的设备,并代之以将Irp 发给它们。 D
19、iskMon 通过使用我开发的驱动程序功能拦截技术克服了此限制。DiskMon 找到一个磁盘设备的驱动程序对象,并用它自己的调度入口点代替驱动程序的调度入口点。DiskMon 过滤功能将它所看到的 Irp 传递给关联的驱动程序,同时以类似的方式拦截完成例程,这样它就可以看到请求的结果。 Windows 2000 和更高版本的实施在 Windows 2000 以及更高版本中,Diskmon 使用内核事件跟踪。事件跟踪在Microsoft Platform SDK 中有说明,SDK 包括了作为 Diskmon 基础的 TraceDmp 的源代码。 下载 Diskmon for Windows NT
20、 4 (68 KB)下载 Diskmon for Windows 2000/XP/2K3 (80 KB)七、DiskView简介用图表方式显示您的磁盘,允许您确定某个文件的位置,或者通过单击簇来查看占用它的文件。双击以获得关于分配了某簇的文件的详细信息。Diskview 可在Windows NT 4、2000、XP 和 Server 2003 上运行。 下载 DiskView (88 KB)八、Disk Usage简介Du(磁盘使用情况)报告您所指定的目录的磁盘空间使用情况。默认情况下,它对目录进行递归操作,显示目录及其子目录的总大小。 用法用法:du -v -l | -n -q (文件或目录
21、)-l指定信息的子目录深度(默认为全部级别)-n不要递归-q不打印标语-v显示中间目录的信息下载 Disk Usage (41 KB)九、EFSDump简介Windows 2000 引入了加密文件系统 (EFS),因此用户可以保护他们的敏感数据。有若干个新的 API 都是在支持这个机制方面初次亮相,包括一个 QueryUsersOnEncryptedFile,它允许您查看谁可以访问加密文件。这个小程序使用 API 来显示有权访问加密文件的帐户。用法:efsdump -s -s对子目录执行递归操作。EFSDump 接受通配符,如“efsdump *.txt”。 下载 EFSDump (39 KB
22、)十、Filemon简介注意:在从 Windows 2000 SP4、Windows XP SP2、Windows Server 2003 SP1 和Windows Vista 开始的 Windows 版本中,Filemon 和 Regmon 已被 Process Monitor 代替。保留 Filemon 和 Regmon 是为了支持旧版操作系统,这些操作系统包括Windows 9x。FileMon 可实时监视和显示系统中的文件系统活动。它的各项高级功能使其成为一个功能强大的工具,用来探索 Windows 的工作方式、查看应用程序对文件和 DLL 的使用方法,或发现系统或应用程序文件配置中的
23、问题。Filemon 时间戳功能将向您精确显示每次打开、读取、写入或删除的时间,其状态列将为您显示最终结果。FileMon 易于使用,几分钟内就可以熟练掌握。它一旦启动就开始进行监视,其输出窗口可以保存到文件中,以便脱机查看。它具有完整的搜索功能,如果您发现信息重载,只要设置一个或几个筛选器就可以解决。 FileMon 可以在 NT 4.0、Windows 2000、Windows XP、Windows XP 和Windows Server 2003 64 位版本、Windows 2003 Server、Windows 95、Windows 98 和Windows ME 上运行。 安装和使用如
24、果有任何问题或疑问,请访问 Sysinternals Filemon 论坛。只需运行 FileMon (filemon.exe) 即可。必须有管理员权限才能运行 FileMon。第一次启动 FileMon 时,它将监视所有本地硬盘驱动器。可以使用菜单、热键或工具栏按钮来清理窗口、选择和取消选择包括网络卷在内的受监视卷 (Windows NT/2K/XP)、将受监视的数据保存到文件,以及筛选和搜索输出。 如果指定了筛选器,则在每次启动 FileMon 时,它将要求您确认是否使用上次会话中使用的筛选器。若要启动 FileMon 但不显示提示,请在命令行上指定 /q 开关。在 FileMon启动时,
25、它将自动捕获文件系统活动。若要在启动它时禁用捕获功能,请在命令行上使用/o 开关。 在将事件打印到输出中时,这些事件都标有序列号。如果 Filemon 内部缓冲区在负载极重的活动期间出现溢出,这会通过序列号的间隔反映出来。 每次退出 FileMon 时,它将记住已配置的筛选器、窗口位置以及输出列的宽度。筛选可使用“筛选器”对话框(可通过工具栏按钮或选择“编辑|筛选器/突出显示”菜单来访问)来选择将显示在列表视图中的数据。“*”通配符可与任意字符串匹配,并且筛选器不区分大小写。只显示在包含筛选器中出现但被排除筛选器排除的匹配项。筛选器中的多个字符串用“;”分隔(如“filemon;temp”)。
26、Windows NT/2000 注意事项:由于文件 I/O具有异步特点,因此不能对结果字段进行筛选。 例如,如果包含筛选器是“c:temp”,排除筛选器是“c:tempsubdir”,则会监视对c:temp下的文件和目录(c:tempsubdir 除外)的所有引用。 通配符支持复合模式的匹配,这样就可以匹配特定应用程序进行的特定文件访问,例如:包含筛选器“Winword*Windows”可以让 FileMon 仅显示 Microsoft Word 对包含“Windows”一词的文件和目录进行的访问。 使用突出显示筛选器可指定要在列表视图输出中突出显示的输出内容。通过“编辑|突出显示颜色”选择突
27、出显示的颜色。 其他筛选器选项可选择或取消选择读取、写入或打开操作。在许多故障排除方案中,仅关注打开操作,例如:在许多疑难排解的案例中,只有打开作业是有关系的。 选择卷(Windows NT/2K/XP/2K3)可使用“卷”菜单来选择或取消选择受监视的卷。选择“网络”菜单项可监视对任何网络资源的访问,包括远程共享和对远程卷的 UNC 路径名称访问。 限制输出通过工具栏按钮或“编辑|历史记录”菜单项访问的“历史记录深度”对话框允许您指定将在输出窗口中记住的最大行数。0 深度用于表示无限制。 搜索输出可以使用“查找”菜单项(或“查找”工具栏按钮)在输出窗口中搜索字符串。可以使用F3 键向前重复搜索
28、,使用 Shift+F3 向回重复搜索。若要从输出中的一个特定行开始进行搜索,请通过单击最左边的列(索引号)选择起始行。如果没有选择行,则新的搜索从第一个条目开始向下搜索,从最后一个条目向上搜索。选项FileMon 可以为事件设置时间戳,或显示其持续时间。“选项”菜单和时钟工具栏按钮可让您在两种模式之间进行切换。工具栏上的按钮将显示当前模式以及时钟或秒表。在显示持续时间时,输出中的“时间”字段显示底层文件系统处理特定请求所花费的时间(秒)。“选项|显示毫秒”菜单条目可让您在 FileMon 显示时钟时间时向所显示的时间增加毫秒精度。 可以使用“选项|总在最前面”菜单项将 FileMon 窗口切
29、换为总是显示在最前面。另外,还可以通过“选项|自动滚动”菜单项或相应的工具栏按钮,将 FileMon 切换为不滚动列表视图。 命名管道与邮件槽从版本 4.1 起,FileMon 可以监视 Windows NT/2K 上命名管道和邮件槽文件系统活动。通常,在 NT/Win2K 中,核心子系统(如本地安全机构子系统 (LSASS))将命名管道用作通信机制,并且 DCOM 也使用命名管道。诸如浏览器服务之类的网络组件也使用命名管道。要使用 FileMon 查看命名管道活动,请选择“驱动器”菜单中的“命名管道”并对共享网络资源执行操作,或打开与安全子系统交互的应用程序,如 Regedt32。 File
30、Mon 的工作原理对于 Windows 9x 驱动程序,FileMon 的核心是虚拟设备驱动程序 Filevxd.vxd。它将动态加载,并在其初始化时,通过 VxD 服务 IFSMGR_InstallFileSystemApiHook 安装文件系统筛选器,以便将其自身插入到所有文件系统请求的调用链中。在 Windows NT 上,FileMon 的核心是文件系统驱动程序,它可创建筛选器设备对象并将其附加到目标文件系统设备对象中,以便 FileMon 能监视到所有针对驱动器的 IRP 和 FastIO 请求。在FileMon 监视到打开、创建或关闭调用时,它将更新用作内部文件句柄和文件路径名之间
31、的映射的内部哈希表。不管它何时监视到基于句柄的调用,它都会在哈希表中查找句柄,以获得要显示的完整名称。如果基于句柄的访问引用的是在 FileMon 启动之前就打开的文件,则 FileMon 将在其哈希表中找不到映射,只会显示此句柄的值。 有关访问的信息将转储到一个 ASCII 缓冲区,该缓冲区会定期复制到 GUI,以便在其列表框中打印出来。 下载 Filemon (280 KB)下载 Filemon V7.04 汉化版 (1218 KB)十一、Junction简介Windows 2000 以及更高版本都支持目录符号链接,其中目录作为到计算机上另一目录的符号链接。例如,如果目录 D:SYMLIN
32、K 指定 C:WINNTSYSTEM32 作为其目标,那么访问D:SYMLINKDRIVERS 的应用程序实际上访问的是 C:WINNTSYSTEM32DRIVERS。目录符号链接在 Windows 中称为 NTFS 接合点。遗憾的是,Windows 并没有附带创建接合点的工具,这样您必须要购买 Win2K 资源工具包,其中附带了用于创建接合点的 linkd 程序。因此我决定编写我自己的接合点创建工具:Junction。Junction 不仅允许您创建 NTFS 接合点,还允许您查看文件或目录是否实际为重新分析点。重新分析点是作为 NTFS 接合点基础的机制,它们被 Windows 的远程存储
33、服务 (RSS) 以及卷装入点所使用。请注意,Windows 不支持到远程共享上的目录的接合点。如果您希望查看重新分析信息,Junction 的用法如下所示: 用法:junction -s -s对子目录执行递归操作。如果您希望创建或删除一个接合点,请按如下方式使用 Junction: 用法:junction -d 要删除接合点,请指定 -d 开关以及接合点名称。 下载 Junction (41 KB)十二、LDMDump简介Windows 2000 引入了一种新类型的磁盘分区方案,由一个称为逻辑磁盘管理器 (LDM) 的组件管理。基本磁盘实施标准的 DOS 风格分区表,而动态磁盘则使用 LDM
34、 分区。LDM 分区相比 DOS 分区有几个优势,包括跨磁盘的复制以及在磁盘上存储高级卷配置(跨区卷、镜像卷、带区卷和 RAID-5 卷)。我在Windows 2000 杂志3 月/4 月期刊上关于Windows NT/2000 存储管理的两篇系列文章介绍了每种分区方案的详细信息。 除了磁盘管理 MMC-snapin 以及一种 Windows 2000 资源工具包中称为 dmdiag 的工具以外,没有其他工具可以研究 LDM 磁盘上数据库的内部情况,而该数据库则描述了系统分区布局。LDMDump 是一种实用程序,允许您检查系统 LDM 数据库的磁盘拷贝中的确切内容。LDMDump 向您显示 L
35、DM 数据库的专用标题、目录以及对象数据库(分区、组件和卷定义存储在此)的内容,然后用分区表和卷列表概括其发现。 安装和使用要使用 LDMDump,只需将磁盘标识符传递给它即可。 用法:ldmdump - -d#- 显示支持的选项和输出值所用的度量单位。-d#指定 LDMDump 要检查的磁盘号。例如,“ldmdump /d0”要求 LDMDump 显示存储在磁盘 0上的 LDM 数据库信息。工作原理不存在已公开的 API 可用于获取与磁盘的 LDM 分区有关的详细信息,而且 LDM 数据库格式完全没有记录。LDMDump 是基于在各种不同的系统中以及不断变化的条件下对 LDM 数据库内容的研
36、究而开发的。下载 LDMDump (43 KB)十三、MoveFile and PendMoves简介有些应用程序(如服务包和修补程序)必须替换正在使用而无法访问的文件。因此,Windows 提供了 MoveFileEx API 来重命名或删除文件,并允许调用方指定让此操作在下一次系统启动时在引用该文件之前执行。会话管理器会从HKLMSystemCurrentControlSetControlSession ManagerPendingFileRenameOperations 值读取注册的重命名和删除命令,来执行这一任务。 当源文件无法访问时,此小程序会将未决的重命名/删除值内容转储并报告错误
37、。下面的输出示例显示计划在系统下一次重新启动时删除临时安装文件:以下内容为程序代码:C:pendmovesPendMove v1.02Copyright (C) 2004 Mark RussinovichSysinternals - 以下内容为程序代码:Source: C:Config.Msi3ec7bbbf.rbfTarget: DELETE附带的 MoveFile 实用程序用于安排在系统下一次重新启动时执行移动和删除命令:usage: movefile source destSpecifying an empty destination (“)deletes the source at b
38、oot.下面是删除 test.exe 的一个示例:movefile test.exe “ 1.MoveFile描述将一个或多个文件从某位置移动到另一位置。语法object.MoveFile source, destination MoveFile 方法的语法有以下部分:部分描述object必选。应为 FileSystemObject 的名称。source必选。要移动的文件的路径。source 参数字符串仅可在路径的最后一个组成部分中用通配符。destination必选。指定路径,表示要将文件移动到该目标位置。destination 参数不能包含通配符。说明如果 source 包含通配符或 de
39、stination 以路径分隔符 () 结束,则假定 destination指定现有文件夹,将匹配文件移动到该文件夹中。否则,假定 destination 是要创建的目标文件。在任一种情况下,移动单个文件时,可能出现以下三种情况: 如果 destination 不存在,则进行文件移动。这是通常会发生的情况。 如果 destination 是已经存在的文件,则会出现错误。 如果 destination 是目录,则会出现错误。 如果在 source 使用通配符,但没有匹配文件时,也会出现错误。MoveFile 方法在遇到出现的第一个错误时停止。该方法不会撤消错误发生前所作的任何更改。 重点仅当操作
40、系统支持时,此方法允许在卷之间移动文件。2.PendMoves枚举在系统下一次启动时所要执行的文件重命名和删除命令的列表,当你发现进程里有你不想运行的东西,但那个文件又提示无法删除,那么使用 Pendmoves,Pendmoves 是能在启动系统的时候替换/删除指定的文件,具有最高优先权。下载 MoveFile and PendMoves (74 KB)十四、NTFSInfo简介NTFSInfo 是一个小程序,向您显示有关 NTFS 卷的信息。它的转储包括驱动器的分配单元大小、关键 NTFS 文件所在的位置以及卷上 NTFS 元数据文件的大小。此信息通常没有太大实际用途,但是 NTFSInfo
41、 的确显示了一些有意思的东西。例如,您大概听说过 NTFS中与 FAT 文件系统的文件分配表相对应的实体。它称为主文件表 (MFT),由大小恒定的记录组成,描述驱动器上所有文件和目录的位置。MFT 让人吃惊的地方是,它是作为一个文件进行管理的,就和其他文件一样。NTFSInfo 除了说明卷的簇和 MFT 记录的大小之外,还将向您显示 MFT 位于磁盘的哪个位置(以簇计),以及它的大小。为防止 MFT 碎片化,NTFS 在 MFT 周围保留了一部分磁盘不分配给其他文件(除非磁盘空间不够)。此区域称为 MFT-Zone,并且 NTFSInfo 将告诉您 MFT-Zone 位于磁盘上的哪个位置,以及
42、有多少比例的驱动器是为它保留的。 您可能会同样感到吃惊的是,与 MFT 类似,所有的 NTFS 元数据也是按文件管理的。例如,有一个名为 Boot 的文件映射为包含驱动器的引导扇区。该卷的簇图保存在另一文件中,名为 Bitmap。这些文件就在 NTFS 的根目录下,但是除非您知道它们在那里,否则就看不到它们。在一个 NTFS 卷的根目录下键入“dir /ah boot”,您实际上将看到 boot文件。NTFSInfo 具有与“dir /ah”同样的作用,即显示所有 NTFS(3.51 和 4.0)元数据文件的名称和大小。 安装和使用NTFSInfo 可以在所有版本的 NTFS 上运行,但 NT
43、FS for Windows NT 5.0 的元数据文件有所不同,NTFSInfo 尚未针对其进行编程。要使 NTFSInfo 为您工作,您必须有管理员权限。要使用它,请键入“NTFSInfo x”,在此“x”是您希望检查的 NTFS 卷的驱动器号。工作原理NTFSInfo 使用一个未经记载的文件系统控制 (FSCTL) 调用从 NTFS 获取关于卷的信息。它打印此信息,以及 NTFS 元数据文件的目录转储。 下载 NTFSInfo (28 KB)十五、PageDefrag简介Windows NT/2000 碎片整理程序界面的局限性在于它无法对通过独占访问打开的文件进行碎片整理。因此,标准的碎
44、片整理程序既无法向您显示分页文件和注册表配置单元的碎片化情况,也无法对它们进行碎片整理。分页和注册表文件碎片化可能是系统因文件碎片化而导致性能下降的首要原因之一。 PageDefrag 使用先进的技术向您提供商业碎片整理程序无法提供的服务:即查看分页文件和注册表配置单元的碎片化情况,并且对它们进行碎片整理的能力。此外,它还对事件日志和 Windows 2000/XP 休眠文件(当休眠笔记本电脑时保存系统内存的地方)进行碎片整理。 PageDefrag 可以在 Windows NT 4.0、Windows 2000、Windows XP 和 Server 2003 上运行。 安装和使用在运行 P
45、ageDefrag (pagedfrg.exe) 时,您将看到一个列表框,说明您的分页文件、事件日志文件和注册表配置单元(SAM、SYSTEM、SYSTEM.ALT、SECURITY、SOFTWARE、DEFAULT)中包含了多少个簇,以及这些文件处在多少个段中。如果您觉得这些文件已经足够碎片化,值得做一次碎片整理,或者您希望每次启动时都进行碎片整理,请选择适当的单选按钮,然后单击“OK”(确定)。 当您指示 PageDefrag 进行碎片整理后,下一次系统启动时它就将尝试碎片整理。CHKDSK检查您的硬盘之后,PageDefrag 会立即使用标准文件碎片整理 API(请参见我的“深入了解 W
46、indows NT 磁盘碎片整理”页中关于这些 API 的介绍)对文件进行碎片整理。在处理每个文件时,PageDefrag 都将在启动时开始屏幕上显示文件名称以及碎片整理成功与否。如果它成功减少了碎片化,它将告诉您开始时文件中簇的数量以及碎片整理后它包含的簇数量。 在某些情况下,PageDefrag 可能无法减少一个或多个文件中的碎片化,此时它将在启动时的蓝屏上予以说明。发生这种情况的原因可能是驱动器上没有足够的空间用于碎片整理,或者可能是可用空间本身就非常碎片化。为达到最佳效果,您应该将 PageDefrag 与商业碎片整理实用程序或者我的免费 Contig 碎片整理程序配合使用。 命令行选
47、项通过为需要的设置指定命令行选项,您可以用非交互式的方式运行 PageDefrag: 用法:pagedefrag -e | -o | -n -t -e每次启动时都整理碎片-o整理一次-n永远不整理-t将倒数计时设置为指定的秒数Step4 点击 OK按钮,即完成了软件的设置。当下一次系统启动时,软件便会对虚拟内存文件进行碎片整理,以提高其运行速度。下载 PageDefrag (70 KB)十六、Process Monitor简介Process Monitor 是一个用于 Windows 的高级监视工具,可以显示实时文件系统、注册表和进程/线程活动。它结合了两个传统 Sysinternals 实用
48、工具(Filemon 和 Regmon)的功能,并增加了大量增强功能,其中包括丰富且不具破坏性的筛选功能、全面的事件属性(如会话 ID 和用户名)、可靠的进程信息、完整的线程堆栈(支持每个操作的集成符号)、同一文件并行日志记录等功能。异常强大的功能使 Process Monitor 成为系统故障排除和恶意软件捕获工具包的核心实用工具。 Process Monitor 可在 Windows 2000 SP4(装有更新汇总 1)、Windows XP SP2、Windows Server 2003 SP1 和 Windows Vista 以及 64 位版本的Windows XP、Windows S
49、erver 2003 SP1 和 Windows Vista 上运行。 Process Monitor 优于 Filemon 和 Regmon 的增强功能Process Monitor 的用户界面和选项类似于 Filemon 和 Regmon 的用户界面和选项,但它是全新编写的程序,并且包括许多重要的增强功能,如: 监视进程和线程的启动和退出(包括退出状态代码)监视映像(DLL 和内核模式设备驱动程序)加载为操作的输入和输出参数捕获更多数据不具破坏性的筛选器可让您在不丢失数据的情况下设置筛选器为每个操作捕获线程堆栈,可以在许多情况下找出操作的根本原因 可靠地捕获进程详细信息,其中包括映像路径、命令行、用户和会话 ID 任何事件属性的可配置、可移动列可以为任何数据字段设置筛选器,其中包括没有配置为列的字段 高级的日志记录体系结构可以记录几千万个捕获的事件,日志数据可达几个 GB 进程树工具可以显示所有在跟踪中引用的进程之间的关系 本地日志格式保留要加载到不同 Process Monitor 实例