Segue aqui uma dica de como executar um trecho de código sobre o contexto de outro usuário que não a própria aplicação.
A classe utiliza bibliotecas nativas do Windows para autenticar o e assim identificar o contexto do usuário que você vier definir como o "executor" do trecho de código que precisa ser "impersonado".
Exemplo de usoi da classe "Impersonator":
using (new Impersonator( "admin", "dominio", "minha_senha123" ))
{
Util.LogEntry("Quem passou por esse trecho de código foi o administrador");
//Segue executando outras operações sob o contexto do usuário "admin"
}
A classe implementa a interface IDisposable. Assim, podemos instanciar a classe usando a diretiva using e aninhar o código a ser "impersonado" nesse escopo. Como todos sabemos, assim que o código sai do escopo da diretiva using, o método Dipose é invocado atumaticamente.
Como vocês podem ver no código, o método Dispose está implementado de forma a devolver o contexto para o usuário default assim que for chamado.
Mas e se caso eu queira compilar essa classe e cedê-la a alguem que pretenda usá-la num código VB .NET? Em VB .NET não existe a diretiva "using".
Basta chamar o Método Dispose explicitamente ou o método "UndoImpersonation();".
Chega de conversa e vamos ao download do código.
É isso ai.
Abraço e até o próximo post
Referencias: A classe original foi desenvolvida por Uwe Keim e modificada por mim.
Nenhum comentário:
Postar um comentário