2009-09-16 7 views
0

J'utilise Visual Studio Team System 2008, C#, .NET 3.5, IIS 7.0 et ASP.NET. J'utilise Silverlight 3.0 aussi. Je veux lire le contenu d'un disque flash USB côté client, en utilisant les informations du disque flash USB comme identifiant de profil utilisateur - tout comme un service bancaire en ligne utilise une clé USB pour stocker un certificat client (mais mon l'exigence de sécurité n'est pas si élevée).Lecture du problème du disque flash USB

Comment lire le contenu d'un fichier spécifique sur une clé USB dans une application Web (côté client)? Pourrions-nous faire cela dans Silverlight (si non, une solution alternative pour lire le contenu du disque flash USB)? BTW: Je veux lire le contenu automatiquement, et je ne veux pas que l'utilisateur sélectionne manuellement le fichier spécifique sur le disque flash USB à lire.

Répondre

7

Vous ne pouvez pas faire cela dans Silverlight. Vous pouvez lire un fichier sur la machine de l'utilisateur, mais pas sans intervention de l'utilisateur. Le modèle de sécurité intégré à Silverlight ne le permet pas. Le meilleur que vous pouvez faire est de lire un fichier spécifié par l'utilisateur est de les faire parcourir avec une boîte de dialogue .

Vous pouvez accéder au lecteur USB/mémoire flash si vous utilisez localement une application console/Windows Forms/WPF. Vous pouvez trouver les lecteurs à l'aide de la classe DriveInfo, puis parcourir ces derniers ou utiliser une requête LINQ pour trouver le lecteur auquel vous voulez accéder. Reportez-vous à la question de dépassement de pile "How to find USB drive letter?" pour plus de détails. Une fois que vous avez un chemin, vous pouvez le rechercher pour le fichier que vous voulez. Vous n'avez pas besoin d'une API ou d'une bibliothèque spéciale, le système d'exploitation Windows traite le lecteur USB comme un lecteur normal, comme un disque dur «permanent» connecté à votre système, et fera tout le sale boulot pour vous à ce niveau. Utilisez simplement les classes d'E/S .NET. Toutefois, si vous souhaitez accéder au lecteur de manière indépendante et indépendante de tout système d'exploitation, vous devez utiliser une bibliothèque tierce.

+0

Merci Chris, si je développe une application côté client (application console), est-il possible d'énumérer tous les lecteurs USB et trouver un qui a le fichier spécifique à l'intérieur de lire? Ma confusion est, je ne sais pas comment identifier/énumérer tous les disques flash USB de l'ordinateur local. – George2

+1

Silverlight vous empêche de voir les fichiers/lecteurs sur la machine de l'utilisateur. Vous pouvez cependant utiliser OpenFileDialog pour obtenir un flux de fichier vers un fichier fourni par l'utilisateur. –

+0

Merci! Si je décide d'écrire une application côté client, comme une console ou une application Windows Forms, est-il possible d'énumérer tous les disques flash USB pour trouver des fichiers spécifiques (comme ce que nous pourrions faire pour un disque dur IDE normal)? Je ne suis pas sûr s'il y a des restrictions pour énumérer tous les disques flash USB pour des fichiers spécifiques pour l'application console ou l'application Windows Form/WPF? – George2

1

Je ne pense pas que ce que vous demandez est possible. Si IS possible, c'est des trucs effrayants ... Pour permettre à un site Web de saisir des choses sans intervention de l'utilisateur? Uh-Uh. Aucun moyen \

Edition -. Ajouté après avoir lu le commentaire

En utilisant uniquement le cadre standard, non. Le support USB n'est pas quelque chose qui vient standard. On pourrait penser qu'il y aurait des classes dans l'espace de noms System.IO pour les ports USB comme pour les ports COM, mais pas de chance. Cependant, il y a des bibliothèques qui vont gérer cela. Voici quelques liens pour vous aider à démarrer.

http://weblogs.asp.net/israelio/archive/2005/08/15/422637.aspx

http://www.icsharpcode.net/OpenSource/SharpUSBLib/

+0

Merci David, si je développe une application côté client (application console), est-il possible d'énumérer tous les lecteurs USB et de trouver celui qui a le fichier spécifique à lire? Ma confusion est, je ne sais pas comment identifier/énumérer tous les disques flash USB de l'ordinateur local. – George2

+0

Merci David! Si j'ai juste besoin de lire un fichier à partir d'un disque Flash USB, je pense que j'ai juste besoin d'utiliser .Net IO API, pourquoi ai-je besoin d'utiliser la bibliothèque spéciale que vous avez mentionnée? Des différences fonctionnelles entre une telle API et l'utilisation de .Net IO API? – George2

+0

J'ai cette préoccupation parce que dans mon ordinateur, le disque Flash USB affiche comme un lecteur de disque normal et je peux accéder aux fichiers dans le disque Flash USB dans l'explorateur de fichiers Windows normal. – George2

Questions connexes