Pergunta

Um dos meus executáveis ??escreve alguma configuração em um arquivo XML para C: \ Program Files \ MyApp \ config.xml. Ele precisa ser executado como administrador no Vista / Server 2008, caso contrário, o sistema operacional não vai deixá-lo escrever para esse local.

Eu incluí um arquivo de manifesto chamado config.exe.manifest, para automaticamente direitos de administração do pedido no lançamento.

Aqui está o meu arquivo de manifesto:

<?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="requireAdministrator" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

Eu tentei isso no Windows Server 2008, mas o arquivo de manifesto parece ser ignorado e o executável é lançado sem direitos suficientes.

Foi útil?

Solução 3

Ok ele funciona quando eu incorporar o arquivo de manifesto usando MT.exe. Ainda não sei porque ele não funciona quando eu fornecer o manifesto como um arquivo separado, mas acho que embeding é uma solução boa o suficiente.

Outras dicas

http: / /blogs.msdn.com/junfeng/archive/2009/05/11/internal-manifest-vs-external-manifest.aspx

citou link acima: No Windows XP, SxS procura manifesto externo antes de manifesto interno. Se um manifesto externo for encontrado, o manifesto interna é ignorado.

No Windows Server 2003 e, mais tarde, a ordem é invertida. manifesto interna é preferível ao manifesto externo.

Se você usar manifesto externo, e suas obras cenário no Windows XP, mas não no Windows Server 2003 e, mais tarde, por favor, verifique o dobro do executável não tem um manifesto interno

Esta irá conduzir você maluco - chegou ao fundo da questão e publicou um artigo e alguns utilitários para ajudar com o seu ser manifesto ignorado: descobrir por que seu externa manifesto está sendo ignorada .

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