Unidades de desfragmentação (dfrgui.exe) não iniciará depois da atualização 1703

1

Tudo isso é um problema curioso após a atualização dos criadores (1703) (OS Build 15063.413) no HP Elitebook 8760w. Defragment and Optimize drives não será lançado. Por exemplo, clicar em Start menu -> Microsoft Administrative Tools -> Defragment and Optimize Drives não faz nada. Com o gerenciador de tarefas aberto, é evidente que nenhum processo foi iniciado. (ou não roda o suficiente para se registrar) Além disso, abrir um console de administrador e executar dfrgui.exe também não faz nada.

Espero que alguém tenha algumas reflexões sobre como depurar ainda mais o problema. A partir do rastreio do kernel executado abaixo, a tentativa de lançar dfrgui.exe resulta em um ExitStatus 259 e ErrorCode 15005 aparentemente apontando para dados de evento que não correspondem ao modelo fornecido no manifest ?? Desfragmentar e otimizar unidades funcionou muito bem ontem de manhã antes da atualização, agora nada.

Eu atualizei para o KB4022716 (OS Build 15063.447) do catálogo de atualização - sem ajuda (ele corrigiu muitos outros problemas na primeira versão da atualização .413).

Aqui estão alguns diagnósticos sobre o que eu recebo da linha de comando, dfrgui - nada, defrag - OK:

PS C:\Users\david> dfrgui
PS C:\Users\david> write-host $?
True

PS C:\Users\david> dfrgui /?
PS C:\Users\david> dfrgui c:


PS C:\Users\david> defrag /?
 Microsoft Drive Optimizer
 Copyright (c) 2013 Microsoft Corp.

Description:

        Optimizes and defragments files on local volumes to
         improve system performance.

<snip>

Em um esforço adicional para reduzir o problema, criei um rastreio do kernel da tentativa de iniciar o dfrgui.exe com um arquivo em lote curto:

logman start "NT Kernel Logger" -p "Windows Kernel Trace" (process,thread,img,disk,net,registry) -o systemevents.etl -ets
dfrgui.exe
logman stop "NT Kernel Logger" -ets

Em seguida, processei o arquivo de eventos, systemevents.etl , (5.5M) com tracerpt systemevents.etl , que criou uma enorme 46M dumpfile.xml . Eu revi o dumpfile e o emparelhei com os eventos inicial e final relacionados a dfrgui.exe (que felizmente é apenas 428K). No entanto, não sou nenhum assistente na interpretação do rastreamento do kernel da janela. Ambos os arquivos são muito grandes para serem usados aqui, mas posso disponibilizar outras partes se elas ajudarem.

O conjunto de dados do evento que se destacou foi:

 <EventData>
   <Data Name="UniqueProcessKey">0xFFFFA008A692A2C0</Data>
   <Data Name="ProcessId">0xFCC</Data>
   <Data Name="ParentId">0x25F8</Data>
   <Data Name="SessionId">       1</Data>
   <Data Name="ExitStatus">259</Data>
   <Data Name="DirectoryTableBase">0x1EAF8A000</Data>
   <Data Name="Flags">       0</Data>
   <Data Name="UserSID">\ELITE\david</Data>
   <Data Name="ImageFileName">dfrgui.exe</Data>
   <Data Name="CommandLine">dfrgui.exe</Data>
   <Data Name="PackageFullName"></Data>
   <Data Name="ApplicationId"></Data>
  </EventData>

Olhando, o próximo evento é importante no que se refere ao processamento do erro:

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
   <Provider Guid="{9e814aad-3204-11d2-9a82-006008a86939}" />
   <EventID>0</EventID>
   <Version>3</Version>
   <Level>0</Level>
   <Task>0</Task>
   <Opcode>1</Opcode>
   <Keywords>0x0</Keywords>
   <TimeCreated SystemTime="2017-07-02T00:16:57.024179100-0500" />
   <Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
   <Execution ProcessID="9720" ThreadID="11156" ProcessorID="2" KernelTime="45" UserTime="15" />
   <Channel />
   <Computer />
  </System>
  <ProcessingErrorData>
   <ErrorCode>15005</ErrorCode>
   <DataItemName />
   <EventPayload>CC0F0000082800000040659081D9FFFF00E0649081D9FFFF0000C8987A00000000E0C7987A0000000F000000000000008020DDE7F77F000000B0B8987A00000000000000080502000000</EventPayload>
  </ProcessingErrorData>
  <RenderingInfo Culture="en-US">
   <Opcode>Start</Opcode>
   <Provider>MSNT_SystemTrace</Provider>
   <EventName xmlns="http://schemas.microsoft.com/win/2004/08/events/trace">Thread</EventName>
  </RenderingInfo>
  <ExtendedTracingInfo xmlns="http://schemas.microsoft.com/win/2004/08/events/trace">
   <EventGuid>{3d6fa8d1-fe05-11d0-9dda-00c04fd7ba7c}</EventGuid>
  </ExtendedTracingInfo>
 </Event>

O código de erro 15005 é:

ERROR_EVT_INVALID_EVENT_DATA
  15005 (0x3A9D)
  The event data raised by the publisher is not compatible 
  with the event template definition in the publisher's manifest.

(de acordo com: link )

Eu suspeito que a resposta está enterrada na longa seqüência de bytes contida no postado como parte do rastreio do kernel. (que é algo que não tenho ideia de como decodificar).

Eu acho o ExitStatus 259 um pouco irônico dado:

"Important The GetExitCodeProcess function returns a valid error code defined by the application only after the thread terminates. Therefore, an application should not use STILL_ACTIVE (259) as an error code. If a thread returns STILL_ACTIVE (259) as an error code, applications that test for this value could interpret it to mean that the thread is still running and continue to test for the completion of the thread after the thread has terminated, which could put the application into an infinite loop."

Consulte: link

Alguém tem alguma idéia adicional sobre o que eu posso tentar obter dfrgui.exe em execução? Se não, existem outros diagnósticos que eu poderia fazer? Eu publiquei para o conselho de respostas da Microsoft, mas até agora, eu recebi apenas um "Eu também" para o problema e sugestões para reverter. (que, como parece ser o único problema que conheço, dificilmente torna o risco de uma reversão atraente). O que tentar em seguida? Deixe-me saber se há algo mais que eu possa postar que possa ajudar.

Por sugestão do Biswa, depois de procurar descrições de opções adicionais para defrag.exe para garantir que as operações estavam corretas para o meu SSD, tentei fazer um ajuste manual com ele. Parece que dfrag.exe não está fazendo nada além de iniciar e sair sem mais. Exemplo,

PS C:\Users\david\Documents\dev\gtk\gtkwrite> defrag /C /H /O /V
Microsoft Drive Optimizer
Copyright (c) 2013 Microsoft Corp.

PS C:\Users\david\Documents\dev\gtk\gtkwrite> write-host $?
True

Portanto, parece que defrag não está fazendo nada além de imprimir os direitos autorais e sair. Eu também tentei com C: /A /V para fazer com que ele analisasse C especificamente, mas não importa o que eu tente, simplesmente imprime os direitos autorais e sai.

Eu executei outro rastreio do kernel no defrag.exe e a saída é virtualmente idêntica ao dfrgui.exe. Mesmo 259 ExitStatus. O EventPayload no evento após o ExitStatus defrag.exe era:

<EventPayload>B4090000EC2B000000C0430081D6FFFF0060430081D6FFFF00003802BC00000000E03702BC0000000F0000000000000060B0E1B7F77F000000B04102BC00000000000000080502000000</EventPayload>
    
por David C. Rankin 03.07.2017 / 12:00

1 resposta

1

Ahah! Eu encontrei o problema!

Por alguma razão inexplicável (talvez uma string cósmica tenha sido ajustada erroneamente na instalação de 1703, ou apenas problemas), a inicialização do "Optimize drives" service foi "Disabled" . Não me pergunte como ou por que ...

Basicamente, bisbilhotar embora TaskMgr services me levaram a 'defragsvc' , que eu cliquei em "open in Services" . Então, descobri que 'defragsvc' foi realmente renomeado "Optimize drives" . Verificando propriedades, achei disabled (que mudei para 'Manual' ) e viola! Clicar em Desfragmentar e Otimizar Drives no menu Iniciar agora funciona como deveria.

4 dias de dor de cabeça por causa de um maldito aplicativo que não lhe dirá "Ei, sou baseado em um serviço desabilitado" quando você invoca na linha de comando ....

Agora a pergunta para o MS devs é "o que diabos fez com que isso fosse desativado durante 1703 update ?? " Ele não foi desativado antes da atualização 1703.

    
por 04.07.2017 / 00:08