【问题标题】:Compact Framework - Get Storage Card Serial NumberCompact Framework - 获取存储卡序列号
【发布时间】:2010-10-07 20:24:41
【问题描述】:

早上好,

如何获取移动设备上存储/SD 卡的序列号?我在 Compact Framework V2.0 上使用 C#.Net 2.0。

谢谢。

【问题讨论】:

    标签: encryption compact-framework .net-2.0 c#-2.0


    【解决方案1】:

    Smart Device Framework provides a mechanism 获取 SD 卡序列号和制造商 ID。

    【讨论】:

      【解决方案2】:

      我不在一台可以为您获取语法的机器上,但我相信您可以使用 System.IO 命名空间来获取基于 IO 的属性。

      首先获取存储卡的 DirectoryInfo。 (这里的代码我不是100%,你可能需要测试,如果我能到我的机器,我会更新它)

      public DirectoryInfo GetStorageCard() {
          DirectoryInfo deviceRoot = new DirectoryInfo("/");
          foreach (DirectoryInfo dir in deviceRoot.GetDirectories()) 
             if (dir.Attributes == FileAttributes.Directory & dir.Attributes = FileAttributes.Temporary)
      return dir;
      }
      

      然后检查代码返回的 DirectoryInfo 上的所有属性。感谢调试的乐趣,您应该能够查看序列号是否是可用属性之一。

      如果没有,您可能需要寻找一些更不受管理的东西。

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        您需要使用一些非托管 API。具体来说,DeviceIoControl 使用IOCT_DISK_GET_STORAGEID 的“控制代码”。反过来,这将返回一个 STORAGE_IDENTIFICATION 结构。

        这里有点棘手,因为 STORAGE_IDENTIFICATION 使用属性 (dwSerialNumOffset) 来指定从结构开始的(内存)偏移量,这很难转化为互操作调用。

        编辑:在 MSDN 论坛上找到 VB.NET implementation

        【讨论】:

        • joOls 在该实现线程中的最后一篇文章说,根据硬件,它可能只返回 Windows 临时生成的序列,而不是硬件序列(请注意)。
        猜你喜欢
        • 2011-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 2018-08-13
        • 2011-10-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多