Comment faire pour qu'une option du programme soit définie par un administrateur que l'utilisateur ne puisse pas modifier?

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

  •  06-07-2019
  •  | 
  •  

Question

Mon application doit lire une option au démarrage pour vérifier si elle doit démarrer en mode lecture seule. L'option ne doit pas être autorisée à être modifiée par l'utilisateur.

Je le fais habituellement maintenant en utilisant une valeur définie dans la section HKLM \ Software du registre du système. L'administrateur définit la valeur et les utilisateurs ne peuvent pas la modifier (ils ne disposent pas du droit de modifier des entrées dans HKLM).

Le problème est que, sur un ordinateur Terminal Server (ou Citrix), cela concerne tous les utilisateurs. Je voudrais trouver un moyen de faire cela par utilisateur. Comment les autres gèrent-ils cela? Existe-t-il une section dans le registre système pour ce type de paramètre par utilisateur que l'utilisateur ne puisse pas modifier?

Merci pour vos suggestions ou commentaires!

Était-ce utile?

La solution

C’est essentiellement ce à quoi sert la clé HKEY_CURRENT_USER \ Software \ Policies , c’est-à-dire une clé de la partie spécifique du registre qui est par défaut en lecture seule pour l’utilisateur lui-même.

Par convention, la hiérarchie des clés doit compléter celle que vous avez déjà sous HKEY_CURRENT_USER \ Software , par exemple. Si vos préférences utilisateur habituelles sont stockées sous HKEY_CURRENT_USER \ Software \ MyCompany \ MyProgram , les préférences utilisateur protégées (ou "stratégies" dans MS lingo) doivent être stockées sous HKEY_CURRENT_USER \ Software \ Policies \. MaSociété \ MonProgramme

Notez qu'il est recommandé de définir uniquement les valeurs sous cette clé via des objets de stratégie de groupe et jamais par accès direct au registre.

Autres conseils

Le concept d'une zone de paramètres par utilisateur que l'utilisateur ne peut pas modifier n'a pas vraiment de sens - si ce sont des paramètres utilisateur, "vous" & ";" (l’utilisateur) s’attend à pouvoir les changer.

Je peux penser à deux alternatives:

  • Ecrivez vos paramètres dans HKLM, mais avez un paramètre différent pour chaque utilisateur et un paramètre de repli global pour les utilisateurs sans le paramètre défini
  • Ecrivez-les en HKCU, mais utilisez le API de sécurité du registre pour empêcher leur écrivant. Vous aurez probablement besoin autorisations supérieures à la leur empêchez-les d'annuler l'autorisation changements. Je n'aime pas vraiment ça option, mais si vous voulez le suivre vous voulez probablement commencer par le RegGetKeySecurity et RegSetKeySecurity . Cette article pourrait être intéressant comme bien.

Personnellement, je pense que la première option serait la plus simple et impliquerait également des éléments moins douteux dans l’arbre de registre de l’utilisateur. J'espère que ça aide!

Que diriez-vous de deux paramètres?

1) Définissez un indicateur dans HKLM spécifiant que le comportement par défaut sur cette machine est en lecture seule.

2) Pour tous les utilisateurs nécessitant un accès complet, définissez un jeton dans HKCU qui permet un accès complet.

Le jeton peut être un hachage cryptographique composé de sel et du nom d'utilisateur. Il ne peut donc pas être copié pour autoriser un autre utilisateur.

Pourquoi ne stockez-vous pas les options dans votre propre base de données? Cela me semble assez pratique et pratique (au moins pour moi 8). Aucun problème pour rendre "portable". version de votre produit. Aucun utilisateur ne dérange les paramètres que vous ne voulez pas déranger.

Quel est le problème avec HKCU au lieu de HKLM? Ce serait par utilisateur. Malheureusement, il pourrait être modifié par l'utilisateur si celui-ci savait comment éditer le registre et trouver la clé.

  • Prenez l’un des fichiers fournis avec votre programme, qui ne doit pas être modifié (du moins pas par l’utilisateur limité). Si aucun fichier de ce type n'existe, créez-en un dans ce but.
  • Laissez l'administrateur définir les droits en lecture seule sur ce fichier pour les utilisateurs restreints.
  • Dans le programme, vérifiez si vous avez un accès en écriture à ce fichier.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top