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

Shi*_*ira 1 c#

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

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

JCT*_*TLK 5

为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);                   
            }
        }
Run Code Online (Sandbox Code Playgroud)

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

[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);
Run Code Online (Sandbox Code Playgroud)

首先按原样编写此函数.它使用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;
        }
Run Code Online (Sandbox Code Playgroud)

我想这应该是一个完整的答案.