Existe uma maneira de ver as variáveis ​​de ambiente atuais para um processo com o WMI?

5

Eu tenho um problema estranho onde algo é mudando meu caminho na minha sessão de login . O caminho permanente no registro não está mudando.

Eu queria monitorar as alterações nas variáveis ​​de ambiente do processo explorer.exe usando Register-CimIndicationEvent com o Win32_Process Objeto CIM. No entanto, não vejo nada sobre variáveis ​​de ambiente lá. Existe uma propriedade que estou perdendo? Existe outra maneira de obter o ambiente atual para outro processo e rastrear alterações nele?

Existe um Win32_Environment classe. No entanto, ele lê as marcas de registro onde as variáveis ​​de ambiente são armazenadas. Não lê as variáveis ​​de trabalho.

Justin Dearing
fonte

Respostas:

4

Eu o ambiente não é algo que está disponível facilmente através de qualquer API ou através do WMI.

O caminho mais simples para rastrear seu ambiente seria fazer verificações regulares Process Explorer para ver quando a mudança está acontecendo.

Se você pode manipular a escrita de um pouco de código C ++, aqui estão alguns recursos sobre como acessar o ambiente de outro processo. Você poderia usar isso para criar uma ferramenta para monitorar o ambiente para você:

heavyd
fonte
1
Hrm, bem, eu prefiro apenas usar PInvoke ao invés de C ++, para o mesmo efeito. Vou tentar.
Justin Dearing
@JustinDearing: +1 para C #.
surfasb
O Sysinternals Process Explorer funciona muito bem para espionar as variáveis ​​de ambiente atuais.
John Dyer