C# 读取U盘问题

C# 读取U盘问题,c#,asp.net,.net,silverlight,visual-studio-2008,C#,Asp.net,.net,Silverlight,Visual Studio 2008,我正在使用2008、C、.NET3.5、IIS7.0和ASP.NET。我也在使用Silverlight 3.0。我想在客户端读取USB闪存盘的内容,使用USB闪存盘中的信息作为用户配置文件标识符-就像在线银行服务使用USB密钥存储客户端证书一样,但我的安全要求并不高 如何读取客户端web应用程序中USB闪存磁盘中特定文件的内容?我们是否可以在Silverlight中执行此操作?如果不能,是否有其他解决方案来读取U盘内容 顺便说一句:我想自动读取内容,我不想让用户手动选择USB闪存盘上要读取的特定

我正在使用2008、C、.NET3.5、IIS7.0和ASP.NET。我也在使用Silverlight 3.0。我想在客户端读取USB闪存盘的内容,使用USB闪存盘中的信息作为用户配置文件标识符-就像在线银行服务使用USB密钥存储客户端证书一样,但我的安全要求并不高

如何读取客户端web应用程序中USB闪存磁盘中特定文件的内容?我们是否可以在Silverlight中执行此操作?如果不能,是否有其他解决方案来读取U盘内容


顺便说一句:我想自动读取内容,我不想让用户手动选择USB闪存盘上要读取的特定文件。

在Silverlight中无法执行此操作。您可以在用户的机器上读取文件,但不需要用户干预。Silverlight内置的安全模型不允许这样做

您所能做的最好是读取用户指定的文件,即让他们使用 “文件打开”对话框


如果您在本地使用控制台/Windows窗体/WPF应用程序,则可以访问USB/闪存驱动器。您可以使用DriveInfo类查找驱动器,然后对其进行迭代,或者使用LINQ查询查找要访问的驱动器。有关详细信息,请参阅堆栈溢出问题。一旦有了路径,就可以在其中搜索所需的文件。您不需要特殊的API或库,Windows操作系统将USB驱动器视为普通驱动器,与连接到系统的永久HDD相同,并将在该级别为您完成所有脏活。只需使用.NET I/O类即可。但是,如果您希望以不依赖任何操作系统的独立方式访问驱动器,则应使用第三方库。

我认为您所要求的是不可能的。如果可能的话,那是可怕的事情。。。允许网站在没有用户干预的情况下获取内容?嗯。不可能\

编辑-在阅读注释后添加

仅使用标准框架是不行的。USB支持不是标准的。您可能会认为System.IO命名空间中会有一些类用于USB端口,就像COM端口一样,但没有这样的运气。但是,有些库将处理此问题。这里有一些链接可以帮助您开始


谢谢David,如果我正在开发一个客户端应用程序控制台应用程序,是否可以枚举所有USB驱动器并找到其中包含特定文件的驱动器来读取?我的困惑是,我不知道如何识别/列举本地计算机的所有U盘。谢谢David!如果我只需要从U盘读取文件,我想我只需要使用.Net IO API,为什么我需要使用您提到的特殊库?此类API与使用.Net IO API之间是否存在功能差异?我有这个问题,因为在我的计算机中,USB闪存磁盘显示为普通磁盘驱动器,我可以在普通Windows文件资源管理器中访问USB闪存磁盘中的文件。Silverlight阻止您查看用户计算机上的任何文件/驱动器。但是,您可以使用OpenFileDialog将文件流获取到用户提供的文件。当然,您可以从控制台应用程序或WPF应用程序执行此操作。我不知道细节,但我相信你可以通过谷歌搜索细节。你可以列举系统上的驱动器来定位USB驱动器。检查这篇文章。。。。该库允许您以独立于平台的方式访问USB设备。所以,如果你使用这个库,你可以在linux上运行你的程序,等等。如果你只使用windows,你不需要它。只是作为普通文件访问。我不知道从开发的角度来看,这些银行U盘是如何工作的。我想他们有某种驱动程序或其他东西,这样设备就不会被篡改。