Segredos do Windows: As variáveis ocultas

Incorporar uma variável ambiental em outra é simplesmente uma questão de agilidade operacional.

Raymond Chen

Há uma caixa de diálogo escondida dentro do painel de controle chamado de variáveis de ambiente. Para encontrá-lo, você precisará navegar até o painel de controle de propriedades do sistema. Em seguida, ficar em um pé, vá para a aba avançada e clique no botão de variáveis de ambiente recitando o alfabeto para trás.

OK, talvez não um par dessas etapas são realmente necessárias. O que, porém, é evidente que ele não estava destinado a usuários médios ser capaz de encontrar facilmente a caixa de diálogo variáveis de ambiente, muito menos entender o que ele faz.

Quando o sistema cria um ambiente para um novo usuário, ele consulta as configurações estabelecidas na caixa de diálogo para determinar quais variáveis para colocar no ambiente e com que valores. O princípio geral é que se uma variável de ambiente é definida nas seções o usuário e o sistema, em seguida, seguirá a definição do usuário.

Em vez de ignorar completamente a variável de sistema, porém, o sistema pode usá-lo para ajudar a definir a variável de usuário. As pessoas querem, muitas vezes, a variável de ambiente do usuário para basear-se sobre a variável de ambiente do sistema. Por exemplo, eles podem querer o caminho do usuário consistem de caminho do sistema, além de alguns diretórios adicionais.

Aqui está como funciona o processo de construção de ambiente. Procede-se em cerca de quatro etapas:

  • Primeiro, o sistema cria algumas variáveis de ambiente de todo o computador predefinido, como sistema­raiz e todos os­usuários­perfil (mas não de computador­nome ou programa­arquivos).
  • Em segundo lugar, ele cria variáveis de ambiente da seção da caixa de diálogo variáveis de ambiente do sistema. As definições de variáveis de ambiente de sistema podem usar a notação "%" para referir-se as variáveis de ambiente predefinido criadas na etapa anterior. Por exemplo, você pode definir uma variável de ambiente de sistema para sistema de %­Drive%\Extras. Após a conclusão, o ambiente do sistema Windows começa a construir o ambiente do usuário.
  • Terceiro passo é criar usuário predefinido variáveis de ambiente, como usuário­perfil e APP­dados. O computador­nome e programa­variáveis de arquivos também são criados aqui, mesmo que estejam tecnicamente variáveis de sistema e não por usuário variáveis.
  • Finalmente, o sistema cria as variáveis de ambiente. Estas são a seção de usuário da caixa de diálogo variáveis de ambiente e ter acesso a todas as variáveis criado pelas três primeiras etapas, assim você pode definir uma variável de ambiente de usuário para usuário de %­PROFILE%\Extras ou uma variável de ambiente do sistema Personalizada definido na segunda etapa. Se uma variável de ambiente do usuário tem o mesmo nome de uma variável de ambiente do sistema, o valor novo substitui o velho.

A substituição acontece depois que o sistema calcula o valor de novo, para que você possa fazer coisas como tem um ambiente de caminho de usuário definido como % PATH %;C:\Extras. A variável % PATH % refere-se à versão da variável do sistema. Agora que você ver o que funciona, você pode descobrir o que não funciona. É o material que não esteja descrito na seção anterior como trabalho.

Por exemplo, você pode usar % SystemRoot % em qualquer lugar. Você pode usar qualquer variável de ambiente do sistema para ajudar a definir uma variável de ambiente do usuário. Você pode usar uma variável de ambiente do usuário predefinidos para ajudar a definir uma variável de ambiente do usuário. Mas você não pode usar uma variável de ambiente do usuário para ajudar a definir uma variável de ambiente do sistema. Tempo não vai recuar.

Um cliente estava tendo dificuldades para definir a variável de ambiente PATH do sistema como % APPDATA %;C:\Windows. Eles encontraram o ambiente final continha apenas o caminho literal como especificado (sinais de porcentagem e tudo), em vez de substituí-lo com o valor da variável de ambiente APPDATA. Se você olhar através da seqüência de operações previamente detalhadas, é claro por que isso ocorreu. Eles estavam tentando definir uma variável de ambiente do sistema com base em uma variável que ainda não tinha sido definida.

A solução foi simples: Mova o caminho de caixa de listagem de ambiente do sistema para caixa de listagem de ambiente do usuário de edição. Dessa forma, quando ele queria usar a variável de ambiente % APPDATA %, a variável seria lá.

O código que cria o ambiente de usuário poderia tentaram construir um gráfico de dependência de fantasia. Em seguida, ele poderia ter acrescentado uma sintaxe personalizada que permitiu a variáveis definições declarar se uma ocorrência específica de % PATH % destinava-se a referir-se a versão de sistema ou usuário da variável PATH. Então ele poderia ter colhido toda essa informação, construída um gráfico de dependência e cuidadosamente definido as variáveis em uma ordem para que cada variável foi definida antes de seus dependentes. Então você teria que decidir o que fazer se uma referência circular foi detectada.

O objetivo do ambiente não é emular um motor de planilha-recálculo. Ele só quer criar um bloco de ambiente a partir de algumas informações básicas, e escolher regras simples faz com que todo o processo mais fácil de explicar e entender. Que é tão difícil de entender?

Raymond Chen

Raymond Chendo Web site, The Old New Thing e identicamente intitulado livro (Addison-Wesley, 2007) tratam Windows histórico e programação do Win32. Ele não alimentar os animais fora das áreas designadas.

Conteúdo relacionado