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?

Foi útil?

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.

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