Назад | Перейти на главную страницу

Как принудительно закрыть дескрипторы ключей реестра в Windows 7?

Это была проблема, с которой я сталкивался гораздо чаще в Windows XP. Я думал, что избавлюсь от этого сейчас, но ошибался. Похоже, что некоторые приложения, в частности, связанные со службами, в нашем случае Symantec Endpoint Protection, не может должным образом освободить дескрипторы ключей реестра. Очевидно Ничего нового. И нет, я не использую BitLocker в этом случае, и я почти уверен, что мы не включили защиту от взлома (это не по умолчанию в BIOS, и мы такие ленивые). Кажется UPHClean может вообще не поддерживаться в Windows 7. Есть ли другой способ принудительно отключить дескрипторы реестра?

Предупреждение: я не рекомендую это делать!

Но раз уж вы спросили ...

Foreach($p In Get-Process) 
{ 
    $Handles = \\live.sysinternals.com\Tools\handle.exe -p $p.ProcessName -a
    ForEach($h In $Handles)
    {
        If($h.Contains(": Key"))
        {
            \\live.sysinternals.com\Tools\handle.exe -c $h.Split(':')[0].Trim() -p $p.Id
        }
    }
}

Это было написано на Powershell 3, но это также будет работать в Powershell 2, который встроен в Windows 7 из коробки.

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

Лично я очень подозреваю, что есть лучший способ решить любую вашу проблему, чем принудительное закрытие дескрипторов. И враждебное отношение, которое вы проявили к Windows в комментариях к ответу @MattLyons, заставляет меня думать, что вы, возможно, не в своей тарелке и, возможно, неправильно понимаете проблему. Возможно, будет полезнее сообщить нам о реальной проблеме, с которой вы столкнулись. Возможно, принудительное закрытие маркеров - не лучший способ решить эту проблему.

Но я не могу устоять перед соблазном написать что-нибудь. Это похоже на болезнь.

Procexp можно закрывать ручки. Используйте Find-> Find Handle или DLL, чтобы найти тот, который вам нужен, щелкните его (он появится в списке на нижней панели) и щелкните правой кнопкой мыши-> закрыть.