i found a solution! following code does exactly what i need. all i have to know is the driveletter.
Dim driveletter as string
Dim scope As ManagementScope
scope = New ManagementScope("\\localhost\root\cimv2")
scope.Connect()
Dim query As ObjectQuery
query = New ObjectQuery("SELECT * FROM Win32_PerfRawData_PerfDisk_PhysicalDisk")
Dim objOS As ManagementObjectSearcher
objOS = New ManagementObjectSearcher(scope, query)
Dim objMgmt As ManagementObject
Dim aryHardDiskOnSystem As New ArrayList
For Each objMgmt In objOS.Get
' aryHardDiskOnSystem.Add(objMgmt("name").ToString())
Debug.WriteLine(objMgmt("name").ToString())
If objMgmt("name").ToString().Contains(driveletter) Then
Dim drivenumber As Integer = objMgmt("name").ToString().Substring(0, 1)
Dim FILE_NAME As String = "part.scp"
If System.IO.File.Exists(FILE_NAME) = False Then
System.IO.File.Create(FILE_NAME).Dispose()
End If
Dim objWriter As New System.IO.StreamWriter(FILE_NAME, True)
objWriter.WriteLine("select disk " & drivenumber)
objWriter.WriteLine("select partition 1")
objWriter.WriteLine("delete partition")
objWriter.WriteLine("create partition primary size=1") 'size is in MB. i am reducing the partition size to 1 MB.
objWriter.WriteLine("format label=" & TextBox2.Text)
objWriter.Close()
Dim oProcess As New Process()
Dim oStartInfo As New ProcessStartInfo("diskpart", "/s part.scp")
oStartInfo.UseShellExecute = False
oStartInfo.RedirectStandardOutput = True
oProcess.StartInfo = oStartInfo
oProcess.Start()
oProcess.WaitForExit()
oProcess.Close()
File.Delete("part.scp")
End If
Next