2010-06-15 6 views
1

Où puis-je créer/modifier/supprimer des clés de registre pour partager des données entre utilisateurs dans le registre Windows 7? Les deux utilisateurs ne sont pas des administrateurs et ne devraient pas avoir besoin de privilèges d'administrateur.Windows 7 partage de données entre utilisateurs via le registre

L'application sur laquelle je travaille utilise le registre pour écrire une clé à partir de l'utilisateur A, puis l'utilisateur peut la lire/la modifier/la supprimer. Aucun utilisateur n'a de privilèges d'administrateur et il ne sera pas possible de changer cela.

Existe-t-il un guide MSDN officiel sur l'utilisation du registre dans Windows 7? Tout lien décrivant l'utilisation correcte du registre serait utile.

Répondre

0

Le registre est pour l'écriture des paramètres de configuration, pas pour le partage de données entre utilisateurs, vous l'utilisez vraiment dans le mauvais but.

Cependant, si vous devez le faire, le seul endroit dans le registre qui aurait du sens serait un peu dans la ruche HKEY_LOCAL_MACHINE, en Software\yourapp, mais je suis à peu près sûr qu'il n'y a nulle part là-dedans qui soit accessible en écriture normale utilisateurs par défaut.
Si vous le pouvez, vous pouvez créer cette clé, puis modifier les autorisations pour le groupe users afin qu'ils aient un accès complet.

This article wiki pourrait aider à voir comment le registre est le mieux utilisé.

0

Sous Windows 7, l'accès à HKLM est réservé aux applications exécutées en tant qu'admin. Si vous n'avez pas de manifeste sur l'application, elle sera virtualisée, ce qui signifie écrire dans un espace de stockage différent par utilisateur.

Je pense que vous devriez utiliser un fichier de configuration dans un emplacement par application qui n'est pas par utilisateur, comme% PROGRAMDATA%, et que votre installation/installation (qui fonctionne probablement comme admin) écris une seule clé où ce fichier est. Les utilisateurs non administrateurs peuvent alors facilement lire et écrire le fichier tout en utilisant l'application.

0

Le registre n'est pas vraiment la bonne façon de procéder. Pouvez-vous nous donner plus de détails sur ce que vous essayez réellement de faire?

Les utilisateurs sont-ils connectés en même temps? Dans ce cas, un mécanisme de communication interprocessus (IPC) pourrait fonctionner. Par exemple: canaux nommés, mémoire partagée, sockets, etc.

Si ce n'est pas le cas, avez-vous un processus en cours d'exécution à tout moment (un service)? Cela pourrait être utilisé comme une sorte de mécanisme de boîte de dépôt.

Si vous avez un programme d'installation, vous pouvez créer un répertoire accessible aux deux utilisateurs (placez-les dans le même groupe, par souci de simplicité). Ensuite, vous pouvez déposer des fichiers de messages là-bas. En bref: le registre est vraiment conçu pour les paramètres de configuration de longue durée. Les communications de courte durée devraient vraiment être faites d'une autre manière.

2

Vous ne pouvez pas accéder à HKLM sans élévation, vous ne pouvez donc pas faire ce que vous avez décrit.

Je suggère quelques-unes des solutions suivantes: 1. Choisissez un autre stockage de données, par ex. base de données, fichier, etc. que tous vos utilisateurs peuvent accéder. 2. Créez un service Windows s'exécutant en tant que LocalSystem (qui donne l'accès RW à HKLM) et faites en sorte que vos applications communiquent avec le service via des canaux nommés/COM/un socket.

Questions connexes