it-swarm-pt.tech

Impedir elevação (UAC) para um aplicativo que não precisa dele

Tendo migrado recentemente do Vista 32bit para o Windows 7 64bit, um dos meus programas agora requer direitos de administrador.

Eu uso um editor de texto bastante exótico (Crimson Editor). Embora não tenha sido projetado para o Vist/Win7, funcionou bem com o Vista. Mas no Windows 7, o executável do programa adiciona esse escudo UAC ao seu ícone (mesmo que o sinalizador "Executar como administrador" na guia de compatibilidade seja não definido)) e solicita elevação sempre que eu o executar.

Como o Win7 determina que esse aplicativo semelhante a um bloco de notas precisa de direitos de administrador? Como posso substituir essa falsa heurística?

34
SealedSun

Não, o motivo pelo qual o Crimson Editor faz isso NÃO é porque não está assinado. (E isso não é novidade para o Win7). Isso ocorre porque o manifesto do aplicativo, incorporado ao tempo de compilação, especifica requestedPrivilegeLevel="highestLevel".

De acordo com esta postagem no fórum , os desenvolvedores do Crimson Editor mudaram isso na revisão 237-241. Eles fizeram isso porque o recurso "Adicionar editor carmesim aos menus de contexto do Shell" requer privilégios de administrador.

A correção a longo prazo seria para os desenvolvedores do Crimson Editor corrigirem o manifesto do aplicativo. Eles devem se adicionar aos menus de contexto do Shell durante a instalação, ou pelo menos informar aos usuários que precisam executar manualmente o aplicativo elevado (o que é fácil de fazer), em vez de exigi-lo.

Para todos os aplicativos com requestedPrivilegeLevel="highestLevel" em seu manifesto (use Exibição de manifesto para exibir manifestos de aplicativos), você pode usar o Microsoft Application Compatibility Toolkit para ajustar o aplicativo com a correção RunAsInvoker, que força o aplicativo a ser executado com seus tokens de usuário padrão.

Para obter mais informações sobre como usar o Application Compatibility Toolkit, consulte esta postagem sobre como aplicá-lo ao Crimson Editor ou instruções gerais .

22
the.d.stro

Eu descobri que tinha dois aplicativos com esse problema. Um tinha 'update' no nome do arquivo e o outro tinha 'update' no 'FileDecsription'. Eu simplesmente removi a atualização do Word desses dois aplicativos e não mais avisos do UAC. Encontrei as informações em 'Como o UAC funciona' - 'Detecção do instalador' em:

http://msdn.Microsoft.com/en-us/library/aa905330.aspx

Que afirma o seguinte:

A detecção do instalador se aplica apenas a:

  • Executáveis ​​de 32 bits
  • Aplicativos sem um nível de execução solicitado
  • Processos interativos em execução como usuário padrão com UAC ativado

Antes de um processo de 32 bits ser criado, os seguintes atributos são verificados para determinar se é um instalador:

  • O nome do arquivo inclui palavras-chave como "instalar", "configurar" e "atualizar".
  • Palavras-chave nos seguintes campos de recurso de controle de versão: Fornecedor, Nome da empresa, Nome do produto, Descrição do arquivo, Nome do arquivo original, Nome interno e Nome da exportação.
  • Palavras-chave no manifesto do aplicativo lado a lado incorporado no executável.
  • Palavras-chave em entradas específicas StringTable vinculadas no executável.
  • Atributos-chave nos dados do arquivo de recurso vinculados no executável.
  • Sequências de bytes direcionadas no executável.

  • Nota: As palavras-chave e sequências de bytes foram derivadas de características comuns observadas em várias tecnologias instaladoras.

13
TheBeauty

Se você possui o Visual Studio, pode fazer o seguinte:

  1. Abra o Visual Studio como administrador.
  2. Pressione Ctrl-O para abrir um arquivo
  3. Navegue até a pasta onde está o Crimson Editor e abra o cedt.exe
  4. O arquivo é aberto usando o editor de recursos e você verá uma árvore com um ramo chamado RT_MANIFEST, expanda isso e clique duas vezes na entrada filho único chamada "1 [English United States]"
  5. Cerca de três quartos do caminho abaixo, na coluna da direita, você verá requestExecutionLevel level = "maximumAvailable", altere "maximumAvailable" para "asInvoker" (NB, o editor é aberto no modo de sobreposição por padrão.
  6. Salve o arquivo e pronto.

HTH

Kevan

7
kevanb

Há algumas informações sobre as heurísticas aqui: http://msdn.Microsoft.com/en-us/library/aa905330.aspx

Um manifesto pode ajudar a controlar algumas dessas coisas.

4
AaronLS