É possível usar o registro de-livre COM com aplicações ATS?
-
20-08-2019 - |
Pergunta
Uma vez que as aplicações ATS são hospedados dentro mshta.exe como é que se fornecer um manifesto? Além disso, eu assumo fornecendo uma MSHTA.exe.manifest poderia potencialmente quebrar outros aplicativos de ATS?
Solução
No Vista +, mshta.exe tem um incorporado manifesto, que tem prioridade sobre os manifestos externos, assim que sua sugestão não é uma opção.
No XP / 2003, sim, a sua sugestão iria funcionar, apesar de que seria má forma, como se soltando arquivos no System32 para modificar o comportamento de um sistema binário (especialmente se certificar de que qualquer registro que você colocar no manifesto são objetos você é o único a se preocupam).
A solução adequada, disponível no Win2003 e acima, é usar o Microsoft.Windows.ActCtx objeto para instanciar o objeto dado uma referência manifesto explícito.
Por exemplo:
var actCtx = WScript.CreateObject("Microsoft.Windows.ActCtx");
actCtx.Manifest = "myregfree.manifest";
var obj = actCtx.CreateObject("MyObj");
Talvez, se este trabalho deve em XP também, um caminho que você pode tomar é uma combinação de ambas as soluções.
Outras dicas
Editar: A minha resposta é errado, mas vou deixá-lo aqui para evitar quaisquer respostas erradas semelhantes:)
Se você pergunta se você pode acessar um objeto COM sem registrar-lo na máquina, então eu acho que a resposta é um sim tentativas. No entanto, o trabalho que você precisa fazer seria substancial e significaria a implementação de um monte de código de baixo nível que a maioria das ferramentas de desenvolvimento fornecem para você como uma questão de curso (Delphi, .NET, JAVA). Você precisaria para fazer a interface com a dll diretamente (como se fosse uma dll normal), consulta as suas interfaces e chamar seus métodos.
Se você tiver C, o conhecimento C ++, a maneira COM é acessado a partir línguas iria dar-lhe algumas dicas.
Desculpe eu não posso ser de mais ajuda.