2009-01-15 16 views
2

Voici ma situation:service Windows pour contrôler l'accès à un fichier dans « Tous les utilisateurs Application Data »

J'ai une application qui utilise un fichier de configuration. Le fichier de configuration s'applique à tous les utilisateurs du système et tous les utilisateurs peuvent apporter des modifications à la configuration.

J'ai décidé de mettre le fichier de configuration dans le dossier "All Users \ Application Data".

Le problème est que le fichier n'est accessible en écriture que par l'utilisateur qui l'a créé.

Voici ma solution temporaire:

Lors de la création du fichier, l'application définir ses options de sécurité afin qu'il puisse être écrit par tous les utilisateurs du système. Cependant, I think this is a hack et je pense que je dois créer un service qui va gérer l'accès au fichier.

Mon application est écrite en C++ (MFC) et je ne suis pas un expert avec toutes les choses .Net. Donc, ma première idée est d'écrire un service Windows C++ avec des interfaces COM qui seront appelées par l'application.

Mes questions:

  • Mon idée est une bonne idée ou quelqu'un connaît une meilleure façon de le faire?
  • Y a-t-il une nouvelle façon plus à jour de faire un service dans Windows que C++ simple et COM?

EDIT:

Je sais qu'il est facile de définir l'autorisation d'écriture à tous les utilisateurs. Avec Windows XP, il était également facile d'écrire des fichiers sous "Program Files" et des clés de registre sous "HKLM" avec un utilisateur limité. Mais maintenant, si vous voulez qu'une application ait la certification du logo Vista, vous ne devez pas écrire dans ces emplacements (événement si les magasins virtuels peuvent vous 'sauver'). Peut-être ma solution finale sera-t-elle la «rendre accessible à tous les utilisateurs», mais ma question est vraiment: «Ma solution est-elle bonne ou avez-vous une autre solution plus facile qui ne repose pas sur le comportement de Microsoft? .

Je suis vraiment désolé de ne pas l'avoir fait savoir dès le début.

Merci beaucoup,

Nic

Répondre

0

je même pas la peine COM. Les canaux nommés pour votre service fonctionnent également, et il est beaucoup plus facile de sécuriser ceux qui ont des ACL. Le service sera si simple que je ne serais même pas déranger avec MFC ou .NET, pur C++ devrait être bien. Tout le gros travail est fait par votre vraie application; le service vérifie simplement si la requête envoyée est raisonnable. (c'est-à-dire pas trop grand etc.)

3

Ce n'est pas la bonne approche. Si vous placez le fichier dans tous les utilisateurs \ Application Data, il doit être accessible en écriture pour tous les utilisateurs. Lorsque vous le créez, créez-le avec des autorisations d'écriture pour tous les utilisateurs.La définition des autorisations de création n'est pas si difficile.

1

Les articles de Raymond Chen sont intéressants et détaillés, mais généralement trop dogmatiques et peu pratiques. À moins que ce ne soit un système critique avec un risque d'altération, je prendrais son point de vue avec un énorme tas de NaCl.

Est-ce que vos utilisateurs vont ouvrir et modifier le fichier directement? Si ce n'est pas le cas, il suffit de rendre le fichier global accessible en écriture et d'appliquer des modifications sensées dans l'interface de votre application. Pour la plupart des applications, il ne vaut pas la peine de consacrer du temps et des efforts à la protection d'un système multi-utilisateur contre les altérations.

Ou, utilisez une base de données.

Questions connexes