c# - 连接到机器的 USB 设备的路径?

标签 c#

如果我有一些 USB 设备连接到我的机器,我怎么知道访问每个设备的路径是什么?

有没有办法通过代码知道呢?

最佳答案

对 Ardman 的回答点赞。完美的。 要对其进行细微修改,我想对其进行修改,您可以在其中找到驱动器类型。它应该可以解决您的问题。

DriveInfo[] mydrives = DriveInfo.GetDrives();

        foreach (DriveInfo mydrive in mydrives)
        {
            if (mydrive.DriveType == DriveType.Removable)
            {
                Console.WriteLine("\nRemovable disk");
                Console.WriteLine("Drive: {0}", mydrive.Name);
                Console.WriteLine("Type: {0}", mydrive.DriveType);                    
            }
            else
            {
                Console.WriteLine("\nNon Removable disk\n");
                Console.WriteLine("Drive: {0}", mydrive.Name);
                Console.WriteLine("Type: {0}", mydrive.DriveType);                   
            }
        }

或者,如果您想专门获取驱动器名称,您也可以这样做。请注意,这些是来自网络的示例,以便特定作者获得荣誉。我所做的是使用这些代码片段创建一个完整的程序,以便您能够理解。

[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
    static extern bool GetVolumeInformation(string Volume, StringBuilder VolumeName, uint VolumeNameSize,out uint SerialNumber, out uint SerialNumberLength, out uint flags,StringBuilder fs, uint fs_size);

首先按原样写这个函数。它使用 kernel32.dll 来检索驱动器信息。 然后在 main 函数中你可以简单地添加这些代码(如果它是一个控制台应用程序或者如果你有一个 GUI 做适当的。)

uint serialNum, serialNumLength, flags;
        StringBuilder volumename = new StringBuilder(256);
        StringBuilder fstype = new StringBuilder(256);
        bool ok = false;
        //Cursor.Current = Cursors.WaitCursor;
        foreach (string drives in Environment.GetLogicalDrives())
        {
            ok = GetVolumeInformation(drives, volumename, (uint)volumename.Capacity - 1, out serialNum,
                                   out serialNumLength, out flags, fstype, (uint)fstype.Capacity - 1);
            if (ok)
            {
                Console.WriteLine( "\n Volume Information of " + drives + "\n");
                Console.WriteLine( "\nSerialNumber of is..... " + serialNum.ToString() + " \n");
                if (volumename != null)
                {
                    Console.WriteLine("VolumeName is..... " + volumename.ToString() + " \n");
                }
                if (fstype != null)
                {
                    Console.WriteLine( "FileType is..... " + fstype.ToString() + " \n");
                }
            }
            ok = false;
        }

我想这对您来说应该是一个完整的答案。

关于c# - 连接到机器的 USB 设备的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4437453/

相关文章:

c# - ASP.NET Core MVC MySQL 标识

c# - Azure WebJob 访问被拒绝

c# - 以编程方式返回

c# - Console.Write 在由 .NET GUI 应用程序的 BackgroundWorker 执行时不起作用

c# - 使用 Entity Framework 批量插入时内存意外增长

c# - 使用 C# 和 MonoTouch 制作 iOS 库或框架

c# - 我有一个变量,当我将它递增 1 时它保持为 0?

c# - TreeNode.NextVisibleNode 损坏了吗?

c# - IIS Express 中使用 Active Directory 的 MVC 身份验证/授权

c# - 如何从 .NET 字符串中获取一组 Unicode 代码点?