Файл: Руссинович М., Маргозис А. Утилиты Sysinternals. Справочник администратора 2012.pdf

ВУЗ: Не указан

Категория: Книга

Дисциплина: Операционные системы

Добавлен: 29.10.2018

Просмотров: 33047

Скачиваний: 742

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

332  Часть 

II   

Работа с утилитами

Удалить соединение можно также командой 

rd

, встроенной в Cmd.exe. 

При использовании rd файлы и подпапки в целевой папке не удаляются, 
если не указать параметр /S.

Чтобы определить, является ли папка соединением, и если является, ото-

бразить целевую папку, используйте следующую команду:

junction [-s] [-q] имя_соединения

имя_соединения указывает путь и может включать символы подстановки. 
Если имя указывает не на соединение, Junction возвратит сообщение «No 
reparse points found» («Точки повторного разбора не найдены»). Для выпол-
нения поиска во вложенных папках используйте параметр -s. Параметр -q 
отключает сообщения об ошибках. Например, следующая команда показы-
вает все точки соединения, найденные на диске C:

junction -s -q C:\

Следующая команда показывает все точки соединения в папке профиля 

пользователя:

junction %USERPROFILE%\*

Эта команда показывает все точки соединения из папки профиля пользо-

вателя, имена которых начинаются с «My»:

junction -s -q %USERPROFILE%\My*

На рис. 11-3 Junction показывает все точки соединения из папки 

ProgramData, обеспечивающие совместимость приложений.

Рис. 11-3. Junction

FindLinks

FindLinks показывает жесткие ссылки, указывающие на данные файла. 
Просто выполните команду findlinks имя_файла; и если на указанный файл 
имеются другие жесткие ссылки, они будут показаны. Например, в Windows 7

SIN_ch_11.indd   332

27.12.2011   14:35:53


background image

Утилиты для работы с файлами 

Глава 11  333 

x64 есть одна копия 64-разрядной версии Notepad.exe, на которую указы-
вают жесткие ссылки из нескольких мест. На рис. 11-4 показаны выход-
ные данные команд findlinks System32\Notepad.exe и findlinks SysWOW64\
notepad.exe.

Рис. 11-4. FinlLinks

Видно, что четыре экземпляра Notepad.exe из папок Windows, System32 и 

двух папок winsxs в действительности являются одним файлом. Кроме того, 
есть 32-разрядная версия в папке SysWOW64, связанная с копией из папки 
winsxs. FindLinks показывает также индекс файла, 64-разрядный идентифи-
катор, назначаемый файловой системой NTFS каждому уникальному файлу 
и папке на томе.

Начиная с Windows 7, можно искать жесткие ссылки, связанные с фай-

лом, при помощи команды fsutil hardlink list имя_файла, но напомним, что 
fsutil всегда требует административных прав.

DU

Можно подумать, что подсчитать размер папки можно, просто просмотрев ее 
содержимое, пройдя через все подпапки и сложив размеры файлов. Однако 
все гораздо сложнее, так как для получения точного значения необходимо 
учесть жесткие ссылки, символьные ссылки на файлы и каталоги, соедине-
ния, сжатые и распределенные файлы, потоки альтернативных данных и не-
используемое пространство кластера.

Утилита DU (Disk Usage, использование диска) показывает дисковое про-

странство, занятое иерархией папок, учитывая все эти факторы. По умолча-
нию она проходит подпапки, но не переходит в соединения и по символьным 
ссылкам на папки, а также игнорирует символьные ссылки на файлы. Она 
учитывает размер содержимого альтернативных потоков данных, включая 
потоки, связанные с объектами-папками. Файлы, на которые ссылается не-
сколько жестких ссылок, считаются только один раз. Наконец, DU сооб-
щает как логический размер, так и фактический размер на диске, учитывая 

SIN_ch_11.indd   333

27.12.2011   14:35:53


background image

334  Часть 

II   

Работа с утилитами

сжатые и распределенные файлы и неиспользуемое пространство кластера. 
Например, если папка содержит только один файл размером 10 байтов, DU 
покажет размер 10 байтов и «размер на диске» 4096 байтов, учитывая размер 
кластера, занятого файлом.

Синтаксис командной строки DU:

du [-n | -l уровни | -v] [-q] папка

По умолчанию DU проходит всю структуру целевой папки и отображает 

итоговые результаты, включая число обработанных файлов и папок, общий 
размер файлов и фактическое занятое место на диске. На рис. 11-5 показан 
пример выполнения команды du -q “C:\Program Files” (параметр -q убирает 
заголовок DU).

Рис. 11-5.  Результаты команды du -q “C:\Program Files”

Параметры -n, -l и -v взаимно исключают друг друга. При использовании 

параметра -n DU не проходит подпапки и учитывает только файлы и пап-
ки, находящиеся только в самой целевой папке. Параметр -v используется 
для отображения размера в КБ промежуточных папок при их обработке. На 
рис. 11-6 показана часть результатов выполнения команды из предыдущего 
примера, но с параметром -v.

Рис. 11-6.  Запуск DU с параметром -v

Параметр -l похож на -v. С ним сканируется вся иерархия папок, но про-

межуточные результаты сообщаются только для указанного числа уровней 

SIN_ch_11.indd   334

27.12.2011   14:35:53


background image

Утилиты для работы с файлами 

Глава 11  335 

папок. На рис. 11-7 показана часть результатов того же примера, но с исполь-
зованием -l 1 вместо -v.

Рис. 11-7.  Отображение промежуточных результатов для одного уровня папок

Утилиты для операций с файлами после загрузки

Программы-установщики часто не могут заменить, переместить или удалить 
файлы из-за того, что они используются. На этот случай Windows позволя-
ет регистрировать такие операции, чтобы процесс диспетчера сеансов (Smss.
exe) — первый процесс пользовательского режима, запускаемый в процессе 
загрузки, выполнял их при следующей загрузке системы, прежде чем какие-
либо приложения или службы смогут занять файл и помешать его изменению. 
Приложения с администраторскими правами могут вызывать API MoveFileEx 
с флагом MOVEFILE_DELAY_UNTIL_REBOOT, который добавляет за-
просы на перемещение или удаление в значения PendingFileRenameOperations 
и  PendingFileRenameOperations2 типа REG_MULTI_SZ из раздела реестра 
HKLM\System\CurrentControlSet\Control\Session Manager.

PendMoves

PendMoves считывает значения PendingFileRenameOperations и PendingFile-
RenameOperations2
 и показывает все операции переименования и удаления 
файлов, которые будут выполнены при следующей загрузке. PendMoves так-
же проверяет наличие исходного файла и отображает сообщение об ошибке, 
если он недоступен. Наконец, PendMoves показывает дату и время последне-
го изменения содержимого раздела Session Manager. Это позволяет понять, 
когда были зарегистрированы операции удаления и переименования.

Приведем пример выходных данных PendMoves, показывающих одну 

ожидающую операцию удаления файла и две операции перемещения, ис-
точник одной из которых не найден:

SIN_ch_11.indd   335

27.12.2011   14:35:54


background image

336  Часть 

II   

Работа с утилитами

Source: C:\Config.Msi\3ec7bbbf.rbf 
Target: DELETE

Source: C:\Windows\system32\spool\DRIVERS\x64\3\New\mxdwdrv.dll
Target: C:\Wi ndows\system32\spool\DRIVERS\x64\3\mxdwdrv.dll

Source: C:\Windows\system32\spool\DRIVERS\x64\3\New\XPSSVCS.DLL
*** Source file lookup error: The system cannot find the file specified.
Target: C:\Windows\system32\spool\DRIVERS\x64\3\XPSSVCS.DLL

Time of last update to pending moves key: 8/29/2010 11:55 PM

MoveFile

MoveFile позволяет запланировать операции перемещения, переименова-
ния и удаления файлов на следующую перезагрузку системы. Просто ука-
жите имя существующей папки или файла и имя цели. Если объект нужно 
удалить, используйте в качестве имени цели две двойные кавычки. При по-
мощи MoveFile можно удалить только пустую папку. Перемещение можно 
выполнять только в пределах одного тома, и при этом целевая папка должна 
существовать. Заметьте, что переименование — это перемещение, при кото-
ром не изменяется папка.

MoveFile требует административные права. В некоторых случаях отло-

женные операции с файлами могут не быть выполнены; об этом см. статью 
Knowledge Base 948601 (http://support.microsoft.com/kb/948601).

В следующем примере файл sample.txt перемещается из c:\original в c:\

newdir после перезагрузки системы, если c:\newdir существует:

movefile c:\original\sample.txt c:\newdir\sample.txt

В этом примере файл sample.txt перемещается и переименовывается:

movefile c:\original\sample.txt c:\newdir\renamed.txt

В этом примере сначала удаляется файл c:\original\sample.txt, а затем 

папка c:\original, в которой не должно оставаться содержимого:

movefile c:\original\sample.txt «»
movefile c:\original «»

SIN_ch_11.indd   336

27.12.2011   14:35:54