No Registro do Windows, qual é o valor da string ProgrammaticAccessOnly e como funciona?

6

Esta é uma pergunta de acompanhamento de este . Como demonstrado por essa resposta, ProgrammaticAccessOnly pode ser usado para ocultar certos itens do menu de contexto sem desabilitar suas funções subjacentes ou relacionadas.

Desta forma, parece um análogo mais útil para o LegacyDisable valor de string, em que ele pode ser usado para desabilitar as funções de registro de uma maneira menos destrutiva que LegacyDisable faz.

No entanto, como acontece com muitos outros pares de dados de valor do Registro, a documentação real sobre o valor e o funcionamento exato dele, da Microsoft ou de outras fontes autoritativas, são difíceis de obter. Tudo o que consegui encontrar fora dos diversos posts do fórum é o seguinte, de um tutorial aqui :

ProgrammaticAccessOnly is a special value that hides a context menu entry but allows programs to access it if required.

Isso está longe de ser abrangente e duvido que o escopo do valor seja limitado aos menus de contexto. Por exemplo, ProgrammaticAccessOnly=Apartment é detalhado em pelo menos uma vez aqui , sem nenhuma explicação sobre o que ele faz ou outros tipos de dados.

Como exatamente o valor da string ProgrammaticAccessOnly no registro funciona? Há alguma ressalva para sempre usá-lo sobre LegacyDisable ? Além disso, o que é uma lista de todos os possíveis tipos de dados que podem ser usados com ele?

    
por Hashim 22.08.2017 / 03:45

1 resposta

5

Eu respondi sua postagem sobre LegacyDisable e ter algum conhecimento do assunto. Como este post não tem respostas, vou tentar, embora minha resposta não seja satisfatório.

O problema com esses itens de registro é que eles não estão documentados. Cada nova versão do Windows pode adicionar mais ou invalidar outras. Como eles são indocumentados, a Microsoft mantém a liberdade de modificar livremente o que quiser, então o ônus de verificar se eles ainda funcionam ou não recai sobre os usuários.

Informações sobre esses itens vêm da Microsoft em todos os tipos de informações não oficiais. canais. Às vezes, eles são encontrados em amostras de SDK ou no MSDN, às vezes no fórum respostas por engenheiros da Microsoft, e às vezes de clientes da Microsoft que tiveram privilégios acesso aos engenheiros da Microsoft.

Encontrei uma pessoa que compilou uma lista de todos os itens conhecidos no artigo Registro do tipo de arquivo , cada um com uma explicação e um link para a documentação. Não é muito surpreendente, a maioria dos itens não tem links de documentação.

Quanto a ProgrammaticAccessOnly , este artigo apenas diz "Remove verb da enumeração IContextMenu?", Mas não tem link de documentação.

Pesquisando via google, eu encontrei um artigo de Winaero que diz:

ProgrammaticAccessOnly does the main trick. It is a special parameter which tells the Windows Explorer shell that the context menu item can only be accessed by software programmatically. The user interface gets locked down, so the command disappears from the context menu!

Juntos, parece que esses itens especiais de registro são reconhecidos pelo Interface IContextMenu qual:

Exposes methods that either create or merge a shortcut menu associated with a Shell object.

A interface IContextMenu é exportada pelos manipuladores de extensão do Shell, usado principalmente pelo Windows Explorer.

Em resumo, a presença de ProgrammaticAccessOnly faz com que o shell enumeração para ignorar o item de shell, mas os programas ainda podem se referir e atualizar através da interface IContextMenu ou diretamente modificando o registro.

    
por 31.08.2017 / 15:25