Por que o SYSTEM continuaria bloqueando identificadores de arquivos executáveis ​​após a saída do aplicativo?

24

Estou vendo um comportamento estranho na minha máquina Windows 7; parece que quando um executável é executado, o SYSTEM mantém um identificador aberto por mais ou menos um minuto. Aqui está o meu encontro mais recente:

Eu instalei o Steam, que inicia o steam.exe pós-instalação para se atualizar. Parece fazer isso escrevendo uma cópia temporária de si mesma, iniciando a execução do download e substituindo a cópia original do executável. No meu caso, isso falhou, alegando que o steam.exe não pôde ser excluído.

Abri a pasta e tentei excluir o steam.exe manualmente, mas o Windows alegou que não tinha permissão. Minha conta é um administrador e é a única conta de usuário nesta máquina. Mas por precaução, iniciei o Explorer como administrador, mas ainda não consegui excluir o arquivo. Eu trouxe as propriedades do arquivo para a guia Segurança, mas ele mostrou apenas uma mensagem dizendo que eu não tinha permissão para visualizar permissões.

Em seguida, criei o Process Explorer para ver se havia algo bloqueado no arquivo. SYSTEM (PID 4), mas quando tentei fechar o identificador de arquivo, ocorreu um erro informando que o identificador era inválido. Tentei visualizar as propriedades do identificador de arquivo, mas também não tinha permissão para fazer isso.

Encerrei tudo, exceto o processo não finalizável do sistema, e parei todos os serviços que posso, incluindo tudo relacionado a AV e firewall, mas o problema continua aparecendo. Eu tentei usar 'takeown' para me dar propriedade do arquivo, mas ele afirma que não tenho permissão para fazer isso. Outras pessoas reivindicaram sucesso usando uma ferramenta chamada 'Unlocker', mas teve o mesmo problema que o Process Explorer ao fechar o identificador de arquivo.

Há muito tempo, desabilitei a Indexação e Pesquisa do Windows e excluí C: \ da indexação, portanto a resposta a esta pergunta não se aplica a mim.

Toda vez, após aproximadamente um minuto, o identificador desaparece e o arquivo é excluído imediatamente; aparentemente, a tentativa do atualizador de excluí-lo ficou na fila e finalmente terminou quando o arquivo não estava mais bloqueado. Infelizmente, a atualização já foi encerrada e não pode ser retomada. E quando eu reinstalo, é claro que ele tenta executar o steam.exe novamente, e estou de volta à estaca zero.

Minha pergunta é: por que essas alças estão por aí e como posso impedi-las?

Editar: aqui estão informações adicionais, conforme solicitado nos comentários:

C:\>fltmc instances
Filter                Volume Name                              Altitude        Instance Name      Frame  VlStatus
--------------------  -------------------------------------  ------------  ---------------------  -----  --------
KLIF                  \Device\Mup                             320400       KLIF                     0
KLIF                  C:                                      320400       KLIF                     0
KLIF                                                          320400       KLIF                     0
luafv                 C:                                      135000       luafv                    0
FileInfo              \Device\Mup                              45000       FileInfo                 0
FileInfo              C:                                       45000       FileInfo                 0
FileInfo                                                       45000       FileInfo                 0

Edit: GMER indica que meu antivírus (Kaspersky) ainda está ativo de alguma forma, apesar de desabilitá-lo de sua própria GUI e de interromper seu serviço.

AttachedDevice  \Driver\tdx \Device\Ip     kl1.sys (Kaspersky Unified Driver/Kaspersky Lab ZAO)
AttachedDevice  \Driver\tdx \Device\Tcp    kl1.sys (Kaspersky Unified Driver/Kaspersky Lab ZAO)
AttachedDevice  \Driver\tdx \Device\Udp    kl1.sys (Kaspersky Unified Driver/Kaspersky Lab ZAO)
AttachedDevice  \Driver\tdx \Device\RawIp  kl1.sys (Kaspersky Unified Driver/Kaspersky Lab ZAO)

Mas tudo isso parece ser para serviços de rede; Não vejo nada relacionado ao sistema de arquivos. Alguma dessas pode ser a causa do problema?

Editar: desabilitei o filtro Kaspersky KLIF, mas o problema de bloqueio permanece.

Edit: Eu resolvi o problema específico do Steam instalando, encerrando com força o instalador antes que ele pudesse iniciar o steam.exe, depois reiniciando no modo de segurança e executando-o lá. Então, aparentemente, o que quer que esteja bloqueando o executável não está presente no modo de segurança.

Embora eu tenha resolvido esse caso em particular, o problema também aparece em outros lugares, então eu ainda gostaria de entender o que está acontecendo.

DNS
fonte
3
"Sistema" é um pseudo-processo que representa (grosso modo) o kernel do Windows. Seriam necessárias mais informações sobre sua configuração (por exemplo, quais drivers de filtro estão no usuário) para fornecer uma resposta definitiva.
0xC0000022L 21/03
Qual é a melhor maneira de obter essas informações adicionais?
DNS
se esses são minifiltros, tente verificar fltmcse esses são filtros herdados em que você precisará de uma ferramenta como o GMER para listar os objetos filtrados. Sei que não é o objetivo principal do GMER, mas pode ser usado dessa maneira. Também costumava haver alguma ferramenta da OSR, mas não me lembro do nome. Responderá novamente, se bem me lembro.
0xC0000022L 21/03
É uma otimização para programas que fecham e reabrem repetidamente arquivos. O serviço "Application Experience" anula a otimização para casos especiais, como tentar excluir do Windows Explorer enquanto o identificador ainda está em cache.
user165568

Respostas:

20

Faça o seguinte:

  1. Desative a indexação no local problemático.

  2. Habilite o serviço "Experiência de aplicativo" e defina-o como "Automático".

É isso.

Se o seu problema ainda persistir, pode ser o Superfetch, embora desabilitar isso não tenha me dado sorte.

Kevin
fonte
5
# 2 (Ativar o serviço "Application Experience") funcionou para mim, obrigado! Foi realmente difícil ao depurar meu software LIVEditor (editor de html ao vivo), pois tenho que recompilar repetidamente o EXE.
Edwin Yip
1
A indexação não era algo que eu queria desativar, mas, felizmente, apenas configurar a Experiência do aplicativo como Automática funcionou. Não posso acreditar que vivi com esse problema nos últimos 5 anos, quando a correção foi tão simples.
Mordred
passado você, eu te amo !!
enthus1ast
Começando AeLookupSvcfuncionou, mas por quê? O que é este serviço misterioso?
Cdlvcdlv
6

KLIF é o driver do Kaspersky AV. É bem provável que isso tenha a ver com isso.

Meu curso de ação nesse caso seria entrar em contato com a Kaspersky e pedir conselhos.

No entanto, há outra coisa que você pode tentar primeiro: desativar o driver (sub HKLM\SYSTEM\CurrentControlSet\Services) procurando KLIFou algo semelhante ao nome da chave e definindo o REG_DWORDvalor nomeado Startpara 4(que significa desativado) e, em seguida, reinicie. Isso deve impedir que o driver do filtro KAV seja carregado. Você pode usar fltmcpara verificar o resultado.

A saída do GMER que você forneceu é irrelevante para o caso em questão, pois afetaria apenas as conexões de rede, não as operações de arquivo. Parece que você tinha algo como o Kaspersky Internet Security instalado (ou ainda o tem inativo na sua máquina).

Edit: apenas a FYI luafvé responsável pela virtualização do FS em conjunto com o UAC. Ou seja, se você não tem acesso a um arquivo, ele está sendo colocado em uma pasta separada dentro do seu perfil. FileInfopertence ao SuperFetch - que na verdade poderia fazer parte do seu problema, mas eu mesmo não tive um problema semelhante no Windows 7. Geralmente, não é recomendável desativar o SuperFetch, embora seja possível.

0xC0000022L
fonte
Não me permitiria alterar o valor dessa chave, então reiniciei no modo de segurança e fiz a alteração lá. Na reinicialização, as entradas KLIF desaparecem da saída fltmc, mas o problema de bloqueio permanece.
DNS
Eu adicionei um pouco mais de informação; veja minha edição recente da pergunta.
DNS
@ DNS: você já tentou obter a saída fltmcno modo de segurança? É bem possível que o SuperFetch não esteja ativo. Quando você lê o SuperFetch, parece que sua descrição sobre segurar um identificador por mais tempo pode ser plausível.
0xC0000022L 22/03
Esse é um pensamento muito bom, mas infelizmente o FileInfo e o luafv estavam ativos no modo de segurança.
DNS
Essas modernas suítes de "segurança na Internet" são exageradas e raramente fazem bem. MSE + senso comum deve ser suficiente.
precisa saber é o seguinte
1

Eu estava tendo esse problema com um Java Executable sendo mantido aberto e havia desativado a experiência do aplicativo ... (pesquisa no Windows também desativada) definindo a experiência do aplicativo para iniciar automaticamente, corrigi-lo para mim. obrigado!!! (Eu também tive problemas com arquivos que não eram salvos por um minuto inteiro e não conseguiam excluir arquivos até um minuto depois de fechá-los ...

David K
fonte
Como você desativa a experiência do aplicativo?
Simon Sheehan
Qualquer ponto de controle de serviços do Windows funcionará - eu uso Iniciar >> Executar >> "services.msc" (enter) >> clique com o botão direito do mouse em "experiência do aplicativo" >> clique com o botão esquerdo em "propriedades" >> selecione a guia "geral" (padrão)> > suspensa caixa de listagem "tipo de inicialização" >> selecione automática (clique esquerdo) >> clique em "aplicar"
David K
1

Isso aconteceu comigo uma vez e acabou sendo um computador remoto que tinha a pasta de compartilhamento aberta.

  1. Use o Handle para descobrir qual processo está mantendo o arquivo
  2. (Foi o sistema no meu caso)
  3. Tente fechar o identificador: handle.exe -c E14 -p 4. Seu identificador de arquivo será encontrado na saída da sua pesquisa para o identificador de arquivo e o ID do processo provavelmente será o mesmo para o sistema.
  4. Saída Error closing handle: T
  5. Pesquisando isso, achei isso relacionado à rede
  6. Encontrei em outra máquina, na verdade eu tinha a pasta aberta. Fechou. Tudo bom.
Todd
fonte
0

Eu tive esse problema ao tentar renomear uma pasta. Eu tive que parar o serviço do servidor enquanto realizava a renomeação. Apenas reiniciar não ajudou, pois o processo do sistema trancou novamente a pasta assim que o serviço do servidor foi reiniciado. Isso provavelmente resolveria o problema mencionado aqui também.

Gelo preto
fonte