Permitir que o usuário Padrão execute o programa que requer elevação do UAC

4

Eu preciso de um usuário padrão ou limitado do Windows 7 para poder executar um aplicativo (Fallout Mod Manager) que requer elevação do UAC. Eu tentei o Application Compatibility Toolkit, mas isso não funcionou como pretendido. Alguma sugestão? Estou executando o Windows 7 Ultimate local, portanto, políticas podem ser aplicadas.

Eu basicamente quero algo como o flag setuid do unix.

    
por Thom Wiggers 02.02.2010 / 15:21

1 resposta

3

É factível, mas não é fácil de explicar.

Existem apenas três motivos para um aplicativo solicitar a elevação na inicialização:

  • a guia Compatibilidade tem a opção "Executar este programa como administrador"
  • o aplicativo tem um manifesto (incorporado ou externo) que especificou requireAdministrator
  • há uma atualização de compatibilidade da Microsoft que a marcou como administrador necessário

Supondo que você já tenha verificado a guia de compatibilidade e o aplicativo não esteja configurado para exigir administrador:

Opróximopassoéverificarseháummanifestoderecursoincorporado.Eunãovouentraremcomovocêpodedescobririsso.Maspuleparacriarummanifestoparavocêmesmo.

CrieumarquivonomesmodiretórioqueoFalloutModManager(nãoseiaqueexeéchamado,masvouchamá-lodeFalloutModManager.exe:

FalloutModManager.exe   FalloutModManager.exe.manifest

Estenovoarquivomanifestquevocêcriaéumarquivodetextosimples,contendoxml,comumaentradademanifestoquedizquequeremoslançarasInvoker,emvezderequireAdministrator:

FalloutModManager.exe.manifest

<?xmlversion="1.0" encoding="UTF-8" standalone="yes"?>
   <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
      <assemblyIdentity 
           version="1.0.0.0"
           processorArchitecture="X86"
           name="client"
           type="win32" /> 

      <description>Poorly written Fallout Mod Manager fails on XP as standard user</description> 

      <!-- Disable file and registry virtualization, and don't require elevation -->
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
         <security>
            <requestedPrivileges>
               <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
            </requestedPrivileges>
         </security>
      </trustInfo>
</assembly>

Ter este arquivo ao lado de seu executável é chamado de " manifesto externo ". Também é possível que o executável tenha um recurso incorporado, o qual você precisaria de uma ferramenta como o Resource Hacker para ver ou modificar.

    
por 26.08.2011 / 19:19