Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C#
  4. How to get DiskDrive model if I know the Drive letter

How to get DiskDrive model if I know the Drive letter

Scheduled Pinned Locked Moved C#
questionhelptutorial
4 Posts 3 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Offline
    L Offline
    lexx_zone
    wrote on last edited by
    #1

    Guys, I need help. I know the volume letter. How can I get a model of physical disk drive which consists a volume with a known to me name? I think, I have to use WMI, maybe Win32_DiskDrive, but how can I compare logical disk with physical disk?

    L 1 Reply Last reply
    0
    • L lexx_zone

      Guys, I need help. I know the volume letter. How can I get a model of physical disk drive which consists a volume with a known to me name? I think, I have to use WMI, maybe Win32_DiskDrive, but how can I compare logical disk with physical disk?

      L Offline
      L Offline
      Lost User
      wrote on last edited by
      #2

      Hello Hope this help ... I know it's far a bit from your answer ... But I really tried to help you as much as I can ,, 1)

      using System;
      using System.Collections.Generic;
      using System.Text;
      using System.Management;
      namespace ConsoleApplication31
      {
      class Program
      {
      static void Main(string[] args)
      {
      ManagementScope scope = new ManagementScope(@"\root\cimv2");
      ObjectQuery query = new ObjectQuery("select * from Win32_DiskPartition");
      ManagementObjectSearcher searcher = new
      ManagementObjectSearcher(scope, query);
      ManagementObjectCollection drives = searcher.Get();
      foreach (ManagementObject current in drives)
      {
      Console.WriteLine("device id = " + current["deviceid"]);
      ObjectQuery associators = new ObjectQuery("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=\"" + current["deviceid"] + "\"} where assocclass=Win32_LogicalDiskToPartition");
      searcher = new ManagementObjectSearcher(scope, associators);
      ManagementObjectCollection disks = searcher.Get();
      foreach (ManagementObject disk in disks)
      {
      Console.WriteLine("\tdevice id = " + disk["deviceid"]);
      }
      }
      }
      }
      }

      1. Another Example ...

      using System;
      using System.Collections.Generic;
      using System.Text;
      using System.Management;
      namespace ConsoleApplication31
      {
      class Program
      {
      static void Main(string[] args)
      {

              ManagementScope scope = new ManagementScope(@"\\root\\cimv2");
              ObjectQuery query = new ObjectQuery("select \* from Win32\_DiskPartition");
              ManagementObjectSearcher searcher = new
              ManagementObjectSearcher(scope, query);
              ManagementObjectCollection drives = searcher.Get();
              int dindex= 0;
              foreach (ManagementObject current in drives)
              {
                  dindex = int.Parse(current\["DiskIndex"\].ToString());
              }
              scope = new ManagementScope(@"\\root\\cimv2");
              query = new ObjectQuery("select \* from Win32\_DiskDrive WHERE Index = " + dindex.ToString());
              searcher = new
              ManagementObjectSearcher(scope, query);
              drives = searcher.Get();
              foreach (ManagementObject current in drives)
              {
                  Console.WriteLine(current\["Model"\].ToString());
      
      L 1 Reply Last reply
      0
      • L Lost User

        Hello Hope this help ... I know it's far a bit from your answer ... But I really tried to help you as much as I can ,, 1)

        using System;
        using System.Collections.Generic;
        using System.Text;
        using System.Management;
        namespace ConsoleApplication31
        {
        class Program
        {
        static void Main(string[] args)
        {
        ManagementScope scope = new ManagementScope(@"\root\cimv2");
        ObjectQuery query = new ObjectQuery("select * from Win32_DiskPartition");
        ManagementObjectSearcher searcher = new
        ManagementObjectSearcher(scope, query);
        ManagementObjectCollection drives = searcher.Get();
        foreach (ManagementObject current in drives)
        {
        Console.WriteLine("device id = " + current["deviceid"]);
        ObjectQuery associators = new ObjectQuery("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=\"" + current["deviceid"] + "\"} where assocclass=Win32_LogicalDiskToPartition");
        searcher = new ManagementObjectSearcher(scope, associators);
        ManagementObjectCollection disks = searcher.Get();
        foreach (ManagementObject disk in disks)
        {
        Console.WriteLine("\tdevice id = " + disk["deviceid"]);
        }
        }
        }
        }
        }

        1. Another Example ...

        using System;
        using System.Collections.Generic;
        using System.Text;
        using System.Management;
        namespace ConsoleApplication31
        {
        class Program
        {
        static void Main(string[] args)
        {

                ManagementScope scope = new ManagementScope(@"\\root\\cimv2");
                ObjectQuery query = new ObjectQuery("select \* from Win32\_DiskPartition");
                ManagementObjectSearcher searcher = new
                ManagementObjectSearcher(scope, query);
                ManagementObjectCollection drives = searcher.Get();
                int dindex= 0;
                foreach (ManagementObject current in drives)
                {
                    dindex = int.Parse(current\["DiskIndex"\].ToString());
                }
                scope = new ManagementScope(@"\\root\\cimv2");
                query = new ObjectQuery("select \* from Win32\_DiskDrive WHERE Index = " + dindex.ToString());
                searcher = new
                ManagementObjectSearcher(scope, query);
                drives = searcher.Get();
                foreach (ManagementObject current in drives)
                {
                    Console.WriteLine(current\["Model"\].ToString());
        
        L Offline
        L Offline
        lexx_zone
        wrote on last edited by
        #3

        Thank you very much for your examples. It was really helpful to me. I combined and modified your solutions and wrote this code:

           string VolumeName = "C:";
                ManagementScope scope = new ManagementScope(@"\\root\\cimv2");
                ObjectQuery query = new ObjectQuery("ASSOCIATORS OF {Win32\_LogicalDisk.DeviceID=\\"" + VolumeName + "\\"} where assocclass=Win32\_LogicalDiskToPartition");
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
                ManagementObjectCollection drives = searcher.Get();
                foreach (ManagementObject current in drives)
                {
                    scope = new ManagementScope(@"\\root\\cimv2");
                    query = new ObjectQuery("ASSOCIATORS OF {Win32\_DiskPartition.DeviceID=\\"" + current\["DeviceID"\].ToString() + "\\"} where assocclass=Win32\_DiskDriveToDiskPartition");
                    searcher = new ManagementObjectSearcher(scope, query);
                    drives = searcher.Get();
                    foreach (ManagementObject current2 in drives)
                    {
                        MessageBox.Show(current2\["model"\].ToString());
                    }
                }
        
        P 1 Reply Last reply
        0
        • L lexx_zone

          Thank you very much for your examples. It was really helpful to me. I combined and modified your solutions and wrote this code:

             string VolumeName = "C:";
                  ManagementScope scope = new ManagementScope(@"\\root\\cimv2");
                  ObjectQuery query = new ObjectQuery("ASSOCIATORS OF {Win32\_LogicalDisk.DeviceID=\\"" + VolumeName + "\\"} where assocclass=Win32\_LogicalDiskToPartition");
                  ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
                  ManagementObjectCollection drives = searcher.Get();
                  foreach (ManagementObject current in drives)
                  {
                      scope = new ManagementScope(@"\\root\\cimv2");
                      query = new ObjectQuery("ASSOCIATORS OF {Win32\_DiskPartition.DeviceID=\\"" + current\["DeviceID"\].ToString() + "\\"} where assocclass=Win32\_DiskDriveToDiskPartition");
                      searcher = new ManagementObjectSearcher(scope, query);
                      drives = searcher.Get();
                      foreach (ManagementObject current2 in drives)
                      {
                          MessageBox.Show(current2\["model"\].ToString());
                      }
                  }
          
          P Offline
          P Offline
          padmanabhan N
          wrote on last edited by
          #4

          well done, you got my 5....

          Padmanabhan My Articles: Articles[^] My latest Article: Word Automation[^]

          1 Reply Last reply
          0
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          • Login

          • Don't have an account? Register

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • World
          • Users
          • Groups