Pergunta

Eu gostaria de determinar como iniciar programaticamente / stop / pause o indexador de pesquisa da Microsoft.

Eu sei que é possível, porque eu já vi isso feito em programas como este: http://brandontools.com/files/folders/sidebar_gadgets/entry511.aspx

No entanto, eu não posso encontrar qualquer docs no MSDN ou em qualquer lugar.

Existe um serviço de "Windows Search", que pode ser controlado com métodos de controle de serviço tradicionais. No entanto, iniciar / parar este serviço também muda a disponibilidade da própria pesquisa. Eu quero controlar apenas o indexador.

Alguém sabe onde docs pode ser encontrada que descrevem como interagir com o indexador? Minhas habilidades de busca têm me falhou.

Foi útil?

Solução

Não há uma maneira de simplesmente desligar a parte de indexação. É um serviço de tudo ou nada. A descrição dos estados de serviços WSearch:

"Fornece indexação de conteúdo e cache propriedade para arquivo, e-mail e outros conteúdos (via APIs de extensibilidade). Os responde serviço de notificações de arquivos e e-mail para indexar conteúdo modificado. Se o serviço for interrompido ou desativado, o Explorer não será capaz para exibir visualizações pasta virtual de itens, e procure no Explorer irá cair de volta ao item por item de pesquisa lento. "

No entanto, você pode ser capaz de controlá-lo através de acionamento propriedades / pasta ... a partir do Explorer, você pode desligá-lo por um acionamento individual (ver as propriedades de uma unidade, não há uma opção "permitir a indexação de serviço ... "), ou para uma pasta (pasta Propriedades -> avançado -> 'para a pesquisa rápida, permitir que a indexação de serviço ...').

Editar ... um pouco de googling, e as propriedades acima estão disponíveis - se você olhar para a página do MSDN para System.IO.FileAttributes , há uma NotContentIndexed propriedade com a descrição o arquivo não será indexado pelos do sistema operacional serviço de indexação de conteúdo . Eu diria que você deve ser capaz de definir isso em pastas individuais. Eu não sei se isso funciona se estiver definida no nível de unidade (sem um prazo recursiva através da unidade), mas espero que ele vai dar-lhe uma vantagem inicial sobre o que você está em última análise, tentando alcançar.

Outras dicas

Segundo o Microsoft não há uma maneira oficial de fazê-lo.

Algo parecido com isto:

serviço ServiceController = new ServiceController ( "WSearch");

service.Start ();

ou

service.Stop ();

Aqui é um ótimo tutorial sobre interagir programaticamente com o Windows Search:. artigo em JoyOfCode

O Windows Search 3. x SDK fornece uma API .NET que obras contra Windows Search 3 ou 4.

Infelizmente, ele não expõe pause / resume. Todas as amostras de controlo índice eu encontrei uso WMI para parar o serviço de pesquisa. Que vai parar de indexação, obviamente, mas à custa de procurar em si não estar disponível.

É uma discussão antiga, mas eu corri em toda ela. Alguém poderia muito bem.

Use um script AutoIT para abrir as Opções de indexação e clique no botão Pausa na caixa de diálogo.

Abra o "Executar" caixa de diálogo (Start | Run), digite (ou copie) % SystemRoot% \ system32 \ compmgmt.msc / s e desdobrar o último

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top