Pergunta

Eu tenho um controle ActiveX que eu estou carregando com JavaScript no Internet Explorer. Ele precisa ser executado como integridade média no UAC no Vista e Win7. Este é escrito em C / C ++, compilado no Visual Studio.

Uma maneira de elevar privilégios é criar um processo de corretor que pode solicitar um nível de integridade médio. No entanto, para este projecto, esta não é uma solução prática. Eu realmente preciso do próprio controle ActiveX para executar elevada.

A minha pergunta é: qual é a maneira mais fácil de fazer isso? Posso alterar as opções de compilação no projeto de ser um exe, e usar o COM interprocess sistema de conexão para tratar automaticamente as comunicações, ou que eu preciso para ser mais sofisticados? Preciso fazer algo complicado como manualmente chamar CreateProcess e fazer algum tipo de corretor, ou pode apenas trabalho como um exe ActiveX que se eleva?

Foi útil?

Solução

Depende principalmente o seu controle ActiveX faz, como você incorporá-lo em uma página e como ele é implementado.

A abordagem mais simples seria provavelmente para implementá-lo como um servidor EXE, registrá-lo como apropriado e, em seguida, dar as permissões executáveis ??para executar a médio na Low Rights Policy Elevation .

Se você não quiser ir tão longe você poderia escrever um simples costume out-of-process servidor que mais uma vez você se registrar e você implementar seu próprio IClassFactory a pedidos de criação de proxy para o DLL existente . Você pode até mesmo adicionar uma chave AppID para o seu objeto existente e especificar é uma DllSurrogate embora (que não registrá-lo como um aplicativo COM +) que você pode não ser facilmente capazes de criação vigor do objeto no substituto (porque o padrão para o IE é especificar CLSCTX_ALL ao criar objetos que vai pegar o registro em processo em primeiro lugar).

É claro que depois de tudo isso, se o seu código faz muitas suposições sobre onde ele é ou usa quaisquer interfaces não-proxy pode não funcionar de qualquer maneira.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top