Segredos do Windows: O shuffle de pacote de serviço

Como você pode ser certo que você está recebendo todos os direito patches e atualizações com um novo service pack? Certeza — eles estão lá.

Raymond Chen

Você já imaginou o que acontece com seus patches e atualizações quando você atualizar um service pack? Não se preocupe — eles são todos de lá. Cada service pack do Windows incorpora todas as atualizações disponíveis no momento que é liberado o service pack. Mas que sobre patches de segurança lançada após o service pack?

Suponha que você tenha implantado a versão original do Windows 7 e você prendido sobre como implantar o Windows 7 SP1 até que você terminar de avaliá-lo contra aplicativos de linha de negócios de sua empresa. Enquanto isso, a Microsoft lança um patch para vulnerabilidades de segurança endereço na versão original do Windows 7 e o primeiro service pack. Implantar esse patch para todos os seus computadores. Você mais tarde determine que Windows 7 SP1 não vai afetar adversamente o fluxo de trabalho de sua empresa. Irá implantar o service pack em todos os seus sistemas acidentalmente reintroduzir a vulnerabilidade de segurança?

Felizmente, a resposta é "não". Patches de segurança lançados quando várias versões do Windows estão a ser apoiados são distribuídos em um mecanismo conhecido como "pacote de atualização de modo duplo". Você pode ler mais sobre este método de distribuição em Base de conhecimento artigo 328848.

Suponha que a versão original do Windows 7 e do Windows 7 SP1 são suportados. Um patch para o Windows 7 será realmente composto de dois patches: um para a versão original do Windows 7 e outra para o Windows 7 SP1. O patch apropriado para a versão atualmente instalada do Windows 7 é aplicado ao sistema. Se o sistema estiver executando a versão original do Windows 7, porém, há uma etapa adicional. A Windows 7 SP1 versão do patch é guardada para um dia chuvoso.

Quando você instala o Windows 7 SP1, o instalador de pacote de serviço verifica todos os patches do Windows 7 SP1 salvos. Se houver algum, ele se aplica-los como parte da atualização. Como resultado, uma vez que você instala um patch de segurança, ele sempre vai estar lá, mesmo se você atualizar para o próximo service pack.

Fechar salvar

Você pode se perguntar por que não há um problema com a atualização para um hipotético Windows 7 SP2. Porque o patch original não inclui uma versão para o segundo service pack, o instalador do Windows 7 SP2 não vai encontrar um patch salvo para aplicar como parte da atualização.

Isso é OK, porque todos os service packs incorporam todas as atualizações lançadas no momento que os service packs são feitos. Conseqüentemente, o problema que o pacote de atualização seria necessário corrigir já é fixo no Windows 7 SP2 devido ao fato de que o segundo service pack saiu após o pacote de atualização. A técnica do pacote de atualização de modo dual é necessária somente para patches que sair após um service pack.

Há um outro tipo de atualização, conhecido como o pacote cumulativo de atualizações. Esta é uma atualização que combina apenas um monte de outras atualizações em um único pacote para sua conveniência. Você pode pensar dele como um pacote mini-serviço. No extremo oposto, você pode pensar do Windows 8 como um mega-service pack para o Windows 7: Além de todos os novos recursos no Windows 8, também inclui todas as atualizações do Windows 7.

Essa complexidade destaca um erro comum ao escrever código que tenta detectar se é ou não uma determinada atualização foi aplicada. Algumas pessoas tentam enumerar instaladas todas as atualizações, mas essa técnica não vai encontrar a atualização, uma vez que o usuário tenha instalado um pacote cumulativo de atualizações ou atualizado para o Windows 7 SP2 ou o Windows 8. Como resultado, o código considera a máquina não tem a atualização, mesmo que ele faz. É justo que a atualização já não existe como uma entidade independente.

Mesmo no caso em que o sistema está executando o Windows 7 SP1 e não tem instalado qualquer pacotes cumulativos de atualizações, uma pesquisa para que a atualização pode gerar um falso positivo. Por exemplo, considere uma atualização que instala a versão 1.3 de uma DLL. Um instalador desonestos depois substitui o DLL com versão 1.2. A atualização foi instalada, mas também invalidada pelo que aconteceu mais tarde.

A pergunta correta é, portanto, não, "quais atualizações são instaladas?" mas sim, "que atualizações precisa ser instalado?" Você pode usar o Windows Update Agent para isso.

O Windows Update Agent está extensivamente documentado na msdn.com. O script de amostra para pesquisa, baixando e instalando atualizações mostra como localizar todas as atualizações disponíveis que ainda não tenham sido aplicadas. Em seguida, ele baixa e instala-los. Se você estiver interessado em uma atualização específica, você pode usar a técnica demonstrada no script de busca, download e instalar atualizações específicas.

O mundo do serviço do Windows é realmente muito mais complicado do que a seqüência de pacote de serviço em linha reta descrita aqui. Há a seqüência de pacote de serviço, a seqüência Quick Fix Engineering (ou QFE) e a seqüência General Distribution Release (ou RDA), cada um deles aborda uma exigência diferente de lançamento. Como resultado, os pacotes multimodos podem existir com muitas variações. Pode haver um para cobrir cada uma das seqüências de lançamento, mas isso é uma história para outra hora.

Raymond Chen

Raymond Chen *Web site, o velho novo coisa e escreveu um livro (Addison-Wesley, 2007) tratam Windows histórico, Win32 aniversários programação e negativos.

Agradecimentos a Mark Phaedrus para sua assistência técnica inadvertida em escrever este artigo.*

Conteúdo relacionado