Como permitir que os administradores editem os arquivos de configuração do meu aplicativo sem elevação do UAC?

StackOverflow https://stackoverflow.com/questions/2444265

Pergunta

Minha empresa produz um aplicativo de servidor de plataforma cruzada que carrega sua configuração a partir de arquivos de configuração com editável do usuário. No Windows, o arquivo de configuração ACLs é bloqueado pelo nosso programa de configuração para permitir a leitura de todos os usuários, mas restringem a edição apenas para administradores e sistema local.

Infelizmente, no Windows Server 2008, mesmo os administradores locais não têm mais privilégios de administração (por causa do UAC), a menos que estejam executando um aplicativo elevado. Isso causou reclamações de usuários que não podem usar seu editor de texto favorito para abrir e salvar alterações de arquivos de configuração- eles podem abrir os arquivos (já que qualquer pessoa pode ler), mas não pode salvar.

Alguém tem recomendações para o que podemos fazer (se alguma coisa) na configuração do nosso aplicativo para facilitar a edição para os administradores no Windows Server 2008?

Perguntas relacionadas: Se um administrador do Windows Server 2008 quiser editar um arquivo de configuração somente para administradores, como ele normalmente faz isso? Ele é forçado a usar um editor de texto que seja inteligente o suficiente para elevar automaticamente quando a elevação é necessária, como o Windows Explorer faz em resposta ao acesso a erros negados? Ele inicia o editor a partir de uma janela elevada de promoção de comando? Algo mais?

Foi útil?

Solução

Na minha opinião, um administrador que não consegue clicar com o botão direito do mouse no bloco de notas e selecionar "Run como Administrador" não deve ser um administrador, mas bem ... na vida real, existem esses administradores por perto.

O UAC funciona desativando o grupo de administradores SID do token de segurança do usuário, até que você execute um programa com privilégios elevados. Ao executar em modo não elevado, infelizmente não há como utilizar os direitos administrativos.

Uma solução alternativa, que infelizmente requer uma quantidade não trivial de trabalho pode ser:

  • Crie um sufixo de nome de arquivo personalizado para o seu arquivo de configuração.
  • Crie um pequeno aplicativo registrado como o manipulador para esse arquivo de configuração.
  • Marque o pequeno aplicativo como exigindo privilégios elevados (você pode fazer isso ao criar um novo aplicativo).

A única coisa que o pequeno aplicativo deve fazer é localizar o manipulador registrado para o arquivo .txt no registro e depois usá -lo para abrir o arquivo - com privilégios elevados.

Outras dicas

Isso não é complicado para os administradores que valem seu sal. Abra o editor de texto elevado, aberto, salve, feito. A maioria das pessoas que edita arquivos de configuração está usada no ritual agora. As pessoas Unix fazem isso reflexivamente (com sudo); É difícil apenas no Windows, porque ainda é um território um pouco desconhecido para alguns usuários.

Realisticamente, eles teriam o mesmo problema se fosse um cenário de registro HKLM, exceto que eles teriam que elevar o Regedit ou PowerShell ou o que eles normalmente usam para editar as configurações do registro.

Se eles não conseguem descobrir, poderiam optar por desativar o UAC completamente, ou diminuir um ou dois nois, mas suspeito que eles não conseguem descobrir como abrir um editor elevado, isso criará mais problemas do que irá resolver.

Você deve tem que pensar antes de fazer grandes alterações nos arquivos de configuração em todo o sistema. A elevação da UAC é suficiente pensar que deve fazer uma pausa se você não quisesse fazer uma alteração em todo o sistema.

Se não fosse um serviço, você pode usar % o UserProfile % para armazenar as definições de configuração, mas geralmente os serviços são executados sob uma credencial de usuário diferente da conta normal do sysadmin.

Os aplicativos DOTNET podem optar por armazenar informações na pasta retornada pelo ambiente.getFolderPath (Environment.SpecialFolder.CommonApplicationData); As pessoas podem precisar de elevação para escrever para essa pasta fora do seu serviço, mas se não gostarem da sua interface do usuário e gostam do editor de texto, é o mesmo que o problema original: elas só precisam aprender a usar o UAC.

Para a segunda pergunta: para uma solução rápida, adiciono o bloco de notas à barra de atalho do Windows, clique com o botão direito do mouse, execute como administrador, abra o arquivo, faça as alterações e salve -o.

Mudamos toda a nossa configuração de aplicativo para o banco de dados. Veja minha postagem no blog aqui. Você pode ver facilmente como criar uma página da Web para editar isso e ter todas as permissões ao vivo no aplicativo da Web.

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