2011-01-31 2 views
3

J'ai lu des requêtes concernant le verrouillage de fichier, mais soit ils se réfèrent à plusieurs problèmes d'accès aux fichiers ou autre chose.Ususal réponse à ce serait verrouiller le fichier en utilisant FileStream.Lock, en utilisant FileShare.None avec File.Open etc, mais le verrouillage dit un 100 fichiers n'est pas une bonne pratique de programmation, également dans ces scénarios le verrou sera libéré si mon application se ferme/plante ce que je ne veux pas aussi je veux que le verrou persiste et seule mon application peut l'ouvrir pour les autres. Sur msdn, j'ai trouvé les espaces de noms System.Security, System.Security.AccessControl, je crois que ceux-ci pourraient aider. En outre, l'article this fera la lumière sur ce que je veux.Comment puis-je verrouiller un fichier dans .net afin que seule mon application puisse y accéder?

EDIT ::

Mannnnn ... ce que quelqu'un a renvoyé l'"ce" lien j'ai fourni.

Ok ... bref, je veux quelque chose que fait le logiciel de sécurité PC.Qu'est-ce qui sonne la cloche ... quelqu'un l'a utilisé ????

Merci.

+0

Sûrement le contrôle d'accès est basé sur l'utilisateur et non sur l'application? Je suppose que vous pourriez créer un utilisateur pour votre application:/ – Lloyd

+3

Je ne comprends pas. Vous dites que les solutions que vous avez rencontrées ne fonctionneront pas car elles ne vous permettent pas de verrouiller 100 fichiers à la fois parce que c'est une mauvaise pratique de programmation. Pourtant, vous semblez vouloir le faire de toute façon, sinon ces solutions * fonctionneraient pour vous. Et oui, les verrous de fichiers sont libérés lorsque votre application se bloque; C'est by-design. Votre application semble horriblement brisée. –

+0

La réponse à votre lien était "ce n'est pas possible". Voulez-vous obtenir la même réponse vous-même? –

Répondre

0

Je recommande d'utiliser la classe IsolatedStorage. Vous pouvez y stocker un fichier directement lié à votre application. Regardez de plus près dans MSDN IsolatedStorage. Vous pouvez utiliser un fichier d'assemblage portée. Quoi qu'il en soit chaque utilisateur PEUT naviguer à travers le système de fichiers à votre applicationData dossier et ouvrir ce fichier manuellement (bien qu'il soit assez inattendu)

+0

Je veux stocker sur le système de serveur de la machine client en utilisant l'application Windows. et je souhaite que le stockage isolé soit partagé entre tous les utilisateurs Active Directory. C'est possible ? –

1

Il y a un défaut de base dans vos besoins ici et qui est que le système de fichiers a seulement une méthode pour empêcher l'accès à un fichier, et c'est par le biais de l'ACL. Vous pouvez spécifier que l'utilisateur qui se connecte au système n'a pas les droits d'accès à ces fichiers, et donc les fichiers ne sont pas disponibles pour lui. Cependant, pour que votre programme puisse accéder à ces fichiers, vous devez configurer un utilisateur qui se connecte pour exécuter votre programme, et bien sûr tous les autres programmes configurés pour fonctionner en tant qu'utilisateur. aura accès à ces fichiers.

D'autres verrous, comme l'ouverture du fichier pour un accès exclusif, est comme vous l'avez déjà constaté, uniquement lorsque le programme est en cours d'exécution. Si pour une raison quelconque le programme n'est pas en cours d'exécution, ces types de verrous ne sont pas en place.

Que spécifiquement essayez-vous d'empêcher? Il pourrait y avoir d'autres façons de gérer cela que d'essayer de verrouiller les fichiers.

1

Vous pouvez crypter le fichier et intégrer la clé dans votre application. Cela dépend de ce que vous entendez par "seule mon application peut l'ouvrir aux autres".

0

Vous essayez de trouver un moyen d'implémenter une méthode ("verrouiller" les fichiers) et non pas d'atteindre un objectif. Je suppose que vous souhaitez conserver certaines données privées et, en option, fournir l'accès à vos données à d'autres applications. Dans ce cas, vous avez besoin d'un conteneur crypté, qui peut être exposé à d'autres applications, par exemple via un disque virtuel (notre SolFS OS edition est une variante optimale dans ce cas).

Cependant, le problème est que la clé sera conservée dans le code de votre application, et peut théoriquement être extraite et utilisée pour accéder au conteneur. Pratiquement, la procédure peut être rendue plus compliquée, mais ce n'est pas une solution à l'épreuve des balles à 100%.

2

Ce n'est simplement pas possible. Un utilisateur avec des privilèges suffisants peut toujours modifier les paramètres de sécurité et exécuter un programme pour accéder à votre fichier. Donc, travailler à partir de l'hypothèse que vous ne pouvez pas arrêter ceci et se concentrer sur ce que le programme ou l'utilisateur pourrait faire avec les données dans le fichier.

Cryptez-le.

0

Je pense que la chose que vous voulez ne peut que possible en utilisant le pilote du système de fichiers minifilter. comme beaucoup d'autres applications fournissent cette fonctionnalité en utilisant un pilote comme bouclier universel dans lequel vous pouvez faire un processus de confiance afin que seul processus de confiance peut accéder à ce fichier/dossier une autre application comme dossier protéger qui fournissent également ce type d'autorisation sur fichier/dossier.

Questions connexes