How to get DiskDrive model if I know the Drive letter
-
-
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?
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"]);
}
}
}
}
}- 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());
-
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"]);
}
}
}
}
}- 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());
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()); } }
-
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()); } }
well done, you got my 5....
Padmanabhan My Articles: Articles[^] My latest Article: Word Automation[^]