Os processos lançados por processos elevados são elevados?

5

Eu tenho um programa que inicia uma janela do navegador quando um usuário executa determinadas ações. Meu programa requer acesso de Administrador (ou seja, deve ser iniciado por meio de "Executar como administrador" ou ter solicitado o nível de Evolução definido para exigir o uso de Administrador no arquivo de manifesto no Vista ou no Win7).

Estou preocupado que o navegador herde o nível de elevação do processo pai; isto é, estou preocupado que o navegador também seja iniciado com a elevação de Administrador. Isso está correto? Em caso afirmativo, existe alguma maneira de evitar isso?

    
por will 14.07.2010 / 04:20

2 respostas

6

O UAC pode ser um conceito bastante complexo para envolver sua mente. De um modo geral, um processo filho herda seu token de acesso do processo pai. No entanto, isso ocorre somente se ambos os processos tiverem o mesmo integrity level :

Each application that requires the administrator access token must prompt the administrator for consent. The one exception is the relationship that exists between parent and child processes. Child processes inherit the user access token from the parent process. Both the parent and child processes, however, must have the same integrity level.

Os níveis de integridade dependem de várias coisas, mas, em geral, um navegador da web é um aplicativo low integrity e provavelmente exigirá um prompt adicional do UAC se ele tentar executar qualquer operação que exija um maior nível de privilégio:

Windows 7 protects processes by marking their integrity levels. Integrity levels are measurements of trust. A "high" integrity application is one that performs tasks that modify system data, such as a disk partitioning application, while a "low" integrity application is one that performs tasks that could potentially compromise the operating system, such as a Web browser. Applications with lower integrity levels cannot modify data in applications with higher integrity levels.

Se você deseja saber mais sobre o UAC, os seguintes artigos são um bom recurso:

por 14.07.2010 / 07:29
0

Você está correto. Qualquer processo que gera um processo filho herda seu contexto de segurança (admin ou não) por padrão.

Não tenho certeza se há uma maneira de contornar isso sem o controle do código-fonte deste programa (mas posso estar errado).

    
por 14.07.2010 / 05:51

Tags