Como ter uma opção de programa definido por um administrador que o usuário não pode mudar?

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

  •  06-07-2019
  •  | 
  •  

Pergunta

Meu aplicativo precisa ler uma opção na inicialização para verificar se ele deve iniciar em modo de somente leitura. A opção não deve ser permitido ser alterado pelo usuário.

Eu costumo fazer isso agora usando um valor definido na seção HKLM \ Software do registro do sistema. O administrador define o valor e os usuários não podem alterá-lo (eles não têm direito de modificar entradas no HKLM).

O problema é que em um servidor de terminal (ou Citrix) Máquina isso afeta todos os usuários. Eu gostaria de descobrir uma maneira de fazer isso em uma base por usuário. Como os outros lidar com isso? Existe uma seção no registro do sistema para este tipo de por usuário definindo que o usuário não pode mudar?

Obrigado por todas as sugestões ou comentários!

Foi útil?

Solução

Este é essencialmente o que a chave HKEY_CURRENT_USER\Software\Policies é a favor, ou seja, uma chave dentro da parte específica do usuário do Registro que é, por padrão somente leitura para o próprio usuário.

Por convenção a hierarquia chave deve complementar o que você já tem sob HKEY_CURRENT_USER\Software, por exemplo, se suas preferências de usuário regulares são armazenados sob HKEY_CURRENT_USER\Software\MyCompany\MyProgram seguida, as preferências do usuário protegidos (ou "políticas" em MS linguagem) devem ser armazenados sob HKEY_CURRENT_USER\Software\Policies\MyCompany\MyProgram

Note que é recomendado para apenas valores definidos nesta chave via Group Policy Objects e nunca pelo acesso ao registro direto.

Outras dicas

O conceito de uma área de configurações por usuário que o usuário não pode mudar realmente não faz sentido -. Se eles são configurações de usuário, "você" (o usuário) espera ser capaz de mudá-los

Não consigo pensar em duas alternativas:

  • Escreva suas configurações no HKLM, mas têm uma configuração diferente para cada usuário e um ajuste fallback global para os usuários sem o conjunto de configuração
  • Escreva-os em HKCU, mas usar o APIs de segurança do registro para evitar -los escrever para ele. Você provavelmente terá permissões maiores do que a deles para impedi-los desfazendo a permissão alterar. Eu realmente não gosto disso opção, mas se você quiser segui-lo você provavelmente vai querer começar com o RegGetKeySecurity RegSetKeySecurity APIs. Este artigo pode ser interessante como bem.

Pessoalmente acho que a primeira opção seria o mais fácil, e também envolveria coisas menos desonesto na árvore de registro do usuário. Espero que ajude!

Como cerca de duas configurações?

1) definir um sinalizador no HKLM especificando que só de leitura é o comportamento padrão no computador.

2) Para os usuários que precisam de acesso completo, definir um token no HKCU que permite acesso completo.

O token pode ser um hash criptográfico de um pouco de sal mais o nome de usuário, por isso não poderia ser copiado para dar permissão a outro usuário.

Por que você não armazenar opções em seu próprio banco de dados? Parece bastante razoável e acessível (pelo menos para mim 8)) Sem problemas com tornando versão "portátil" do seu produto. Nenhum membro incomodando as configurações que você não quer que eles se preocupar.

errada O que acontece com HKCU vez de HKLM? Isso seria por usuário. Infelizmente, pode ser alterado pelo usuário se o usuário soubesse como editar o registo e encontrar a chave.

  • Faça um dos arquivos que vêm com o seu programa, que não deve ser alterada (pelo menos não pelo usuário restrito). Se não existe tal arquivo, criar um apenas para esta finalidade.
  • Deixe o conjunto administrador ler apenas os direitos para esse arquivo para os usuários restritos.
  • Na verificação do programa se você tem acesso de gravação para o arquivo.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top