【问题标题】:Reading USB flash disk issue读取U盘问题
【发布时间】:2009-09-16 04:10:05
【问题描述】:

我正在使用Visual Studio Team System 2008、C#、.NET 3.5、IIS 7.0 和 ASP.NET。我也在使用 Silverlight 3.0。我想在客户端读取 U 盘的内容,使用 U 盘中的信息作为用户配置文件标识符——就像网上银行服务使用 USB 密钥存储客户端证书(但我的安全要求不高)。

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

BTW:我想自动读取内容,不希望用户手动选择U盘上的特定文件进行读取。

【问题讨论】:

    标签: c# asp.net .net silverlight visual-studio-2008


    【解决方案1】:

    您不能在 Silverlight 中执行此操作。您可以读取用户机器上的文件,但不能在没有用户干预的情况下读取。 Silverlight 中内置的安全模型不允许这样做。

    您能做的最好的事情是读取用户指定的文件,让他们使用 文件打开对话框。

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

    【讨论】:

    • Silverlight 会阻止您查看用户计算机上的任何文件/驱动器。但是,您可以使用 OpenFileDialog 将文件流获取到用户提供的文件。
    • 当然,您可以从控制台应用程序或 WPF 应用程序执行此操作。我不知道细节,但我相信你可以谷歌了解细节。
    • 您可以枚举系统上的驱动器来定位 USB 驱动器。检查这篇 SO 文章....stackoverflow.com/questions/123927/how-to-find-usb-drive-letter
    • 该库允许您以独立于平台的方式访问 USB 设备。所以,如果你使用那个库,你可以在linux上运行你的程序,等等。如果你只使用windows,你就不需要它。只需作为普通文件访问即可。
    • 我不知道这些银行 USB 密钥是否(从开发的角度)如何工作。我想他们有某种驱动程序或其他东西,这样设备就不会被篡改。
    【解决方案2】:

    我认为您的要求是不可能的。如果它可能,那就太可怕了...允许网站在没有用户干预的情况下抓取东西?嗯嗯。没办法。\

    编辑 - 阅读评论后添加

    仅使用标准框架,不。 USB 支持不是标准配置。你会认为 System.IO 命名空间中会有一些类用于 USB 端口,就像 COM 端口一样,但没有这样的运气。但是,有一些库可以处理这个问题。以下是一些帮助您入门的链接。

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

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

    【讨论】:

    • 感谢 David,如果我正在开发客户端应用程序(控制台应用程序),是否可以枚举所有 USB 驱动器并找到其中包含特定文件的驱动器来读取?我的困惑是,我不知道如何识别/枚举本地计算机的所有 USB 闪存盘。
    • 谢谢大卫!如果我只是需要从 U 盘读取文件,我想我只需要使用 .Net IO API,为什么我需要使用你提到的特殊库?此类 API 与使用 .Net IO API 的功能有何不同?
    • 我有这个顾虑是因为在我的电脑中,U 盘显示为普通磁盘驱动器,我可以在普通 Windows 文件资源管理器中访问 U 盘中的文件。
    猜你喜欢
    • 1970-01-01
    • 2010-12-02
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    相关资源
    最近更新 更多