Skip to content

Commit

Permalink
Replace helper command with native WMI queries
Browse files Browse the repository at this point in the history
  • Loading branch information
CodingWonders committed Nov 16, 2023
1 parent 3b5b32e commit 110dd02
Show file tree
Hide file tree
Showing 6 changed files with 100 additions and 39 deletions.
3 changes: 3 additions & 0 deletions DISMTools.vbproj
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@
<Reference Include="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<Private>True</Private>
</Reference>
<Reference Include="System.Management">
<Private>True</Private>
</Reference>
<Reference Include="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<Private>True</Private>
</Reference>
Expand Down
5 changes: 5 additions & 0 deletions Helpers/dthelper.bat
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ if "%1%"=="/sh" (

:dt_wmic
cls

:: Show deprecation notice
echo This function is deprecated and has been replaced by native WMI commands.
echo You can still access this function, but it will be removed in the future.

echo Getting drive information. Please wait...
if exist .\wmic (
del .\wmic
Expand Down
Binary file modified Installer/Output/dt_setup.exe
Binary file not shown.
1 change: 1 addition & 0 deletions Installer/dt.iss
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ Source: ".\files\Microsoft.Dism.dll"; DestDir: "{#pfDir}"; Flags: ignoreversion
Source: ".\files\ScintillaNET.dll"; DestDir: "{#pfDir}"; Flags: ignoreversion
Source: ".\files\System.dll"; DestDir: "{#pfDir}"; Flags: ignoreversion
Source: ".\files\System.Drawing.dll"; DestDir: "{#pfDir}"; Flags: ignoreversion
Source: ".\files\System.Management.dll"; DestDir: "{#pfDir}"; Flags: ignoreversion
Source: ".\files\System.Windows.Forms.dll"; DestDir: "{#pfDir}"; Flags: ignoreversion
Source: ".\files\System.Xml.dll"; DestDir: "{#pfDir}"; Flags: ignoreversion
Source: ".\files\System.Xml.Linq.dll"; DestDir: "{#pfDir}"; Flags: ignoreversion
Expand Down
46 changes: 46 additions & 0 deletions Panels/Img_Ops/ApplicationDriveSpecifier.Designer.vb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

84 changes: 45 additions & 39 deletions Panels/Img_Ops/ApplicationDriveSpecifier.vb
Original file line number Diff line number Diff line change
Expand Up @@ -3,40 +3,30 @@ Imports System.IO
Imports Microsoft.VisualBasic.ControlChars
Imports System.Text.Encoding
Imports System.Threading
Imports System.Management

Public Class ApplicationDriveSpecifier

Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
If RichTextBox1.Text.Contains(TextBox1.Text) Then
ImgApply.TextBox3.Text = TextBox1.Text
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
Else
Select Case MainForm.Language
Case 0
Select Case My.Computer.Info.InstalledUICulture.ThreeLetterWindowsLanguageName
Case "ENU", "ENG"
MsgBox("The specified Drive ID does not exist. Please specify an existing Drive ID and try again. You can also refresh the list if you've just plugged or unplugged external drives", MsgBoxStyle.Critical, "Destination drive")
Case "ESN"
MsgBox("El ID del disco especificado no existe. Especifique un ID de disco existente e inténtelo de nuevo. También puede actualizar la lista si acaba de conectar o desconectar discos externos", MsgBoxStyle.Critical, "Disco de destino")
Case "FRA"
MsgBox("L'ID de disque spécifié n'existe pas. Veuillez spécifier un ID de disque existant et réessayer. Vous pouvez également actualiser la liste si vous venez de brancher ou de débrancher des disques externes.", MsgBoxStyle.Critical, "Disque de destination")
End Select
Case 1
MsgBox("The specified Drive ID does not exist. Please specify an existing Drive ID and try again. You can also refresh the list if you've just plugged or unplugged external drives", MsgBoxStyle.Critical, "Destination drive")
Case 2
MsgBox("El ID del disco especificado no existe. Especifique un ID de disco existente e inténtelo de nuevo. También puede actualizar la lista si acaba de conectar o desconectar discos externos", MsgBoxStyle.Critical, "Disco de destino")
Case 3
MsgBox("L'ID de disque spécifié n'existe pas. Veuillez spécifier un ID de disque existant et réessayer. Vous pouvez également actualiser la liste si vous venez de brancher ou de débrancher des disques externes.", MsgBoxStyle.Critical, "Disque de destination")
End Select
End If
ImgApply.TextBox3.Text = TextBox1.Text
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
End Sub

Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Close()
End Sub

Sub ListDisks()
ListView1.Items.Clear()
Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher("SELECT DeviceID, Model, Partitions, Size FROM Win32_DiskDrive")
Dim dskResults As ManagementObjectCollection = searcher.Get()
For Each result As ManagementObject In dskResults
ListView1.Items.Add(New ListViewItem(New String() {result("DeviceID"), result("Model"), result("Partitions"), result("Size")}))
Next
End Sub

Private Sub ApplicationDriveSpecifier_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Select Case MainForm.Language
Case 0
Expand All @@ -47,37 +37,61 @@ Public Class ApplicationDriveSpecifier
Button2.Text = "Refresh"
OK_Button.Text = "OK"
Cancel_Button.Text = "Cancel"
ListView1.Columns(0).Text = "Device ID"
ListView1.Columns(1).Text = "Model"
ListView1.Columns(2).Text = "Partitions"
ListView1.Columns(3).Text = "Size"
Case "ESN"
Text = "Especificar disco de destino..."
Label2.Text = "ID de disco (\\.\PHYSICALDRIVE(n)):"
Button2.Text = "Actualizar"
OK_Button.Text = "Aceptar"
Cancel_Button.Text = "Cancelar"
ListView1.Columns(0).Text = "ID de dispositivo"
ListView1.Columns(1).Text = "Modelo"
ListView1.Columns(2).Text = "Particiones"
ListView1.Columns(3).Text = "Tamaño"
Case "FRA"
Text = "Spécifier le disque cible..."
Label2.Text = "ID de disque de destination (\\.\PHYSICALDRIVE(n)):"
Button2.Text = "Rafraîchir"
OK_Button.Text = "OK"
Cancel_Button.Text = "Annuler"
ListView1.Columns(0).Text = "ID de l'appareil"
ListView1.Columns(1).Text = "Modèle"
ListView1.Columns(2).Text = "Partitions"
ListView1.Columns(3).Text = "Taille"
End Select
Case 1
Text = "Specify target disk..."
Label2.Text = "Destination disk ID (\\.\PHYSICALDRIVE(n)):"
Button2.Text = "Refresh"
OK_Button.Text = "OK"
Cancel_Button.Text = "Cancel"
ListView1.Columns(0).Text = "Device ID"
ListView1.Columns(1).Text = "Model"
ListView1.Columns(2).Text = "Partitions"
ListView1.Columns(3).Text = "Size"
Case 2
Text = "Especificar disco de destino..."
Label2.Text = "ID de disco (\\.\PHYSICALDRIVE(n)):"
Button2.Text = "Actualizar"
OK_Button.Text = "Aceptar"
Cancel_Button.Text = "Cancelar"
ListView1.Columns(0).Text = "ID de dispositivo"
ListView1.Columns(1).Text = "Modelo"
ListView1.Columns(2).Text = "Particiones"
ListView1.Columns(3).Text = "Tamaño"
Case 3
Text = "Spécifier le disque cible..."
Label2.Text = "ID de disque de destination (\\.\PHYSICALDRIVE(n)):"
Button2.Text = "Rafraîchir"
OK_Button.Text = "OK"
Cancel_Button.Text = "Annuler"
ListView1.Columns(0).Text = "ID de l'appareil"
ListView1.Columns(1).Text = "Modèle"
ListView1.Columns(2).Text = "Partitions"
ListView1.Columns(3).Text = "Taille"
End Select
If MainForm.BackColor = Color.FromArgb(48, 48, 48) Then
BackColor = Color.FromArgb(31, 31, 31)
Expand All @@ -92,31 +106,23 @@ Public Class ApplicationDriveSpecifier
End If
TextBox1.ForeColor = ForeColor
RichTextBox1.ForeColor = ForeColor
Dim WmicProc As Process = Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.Windows) & "\system32\cmd.exe", "/c .\bin\dthelper.bat /drinfo")
WmicProc.WaitForExit()
Try
RichTextBox1.Text = File.ReadAllText(Application.StartupPath & "\wmic")
File.Delete(Application.StartupPath & "\wmic")
Catch ex As Exception

End Try
ListView1.BackColor = BackColor
ListView1.ForeColor = ForeColor
Dim handle As IntPtr = MainForm.GetWindowHandle(Me)
If MainForm.IsWindowsVersionOrGreater(10, 0, 18362) Then MainForm.EnableDarkTitleBar(handle, MainForm.BackColor = Color.FromArgb(48, 48, 48))
ListDisks()
BringToFront()
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim WmicProc As Process = Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.Windows) & "\system32\cmd.exe", "/c .\bin\dthelper.bat /drinfo")
WmicProc.WaitForExit()
Try
RichTextBox1.Text = File.ReadAllText(Application.StartupPath & "\wmic")
File.Delete(Application.StartupPath & "\wmic")
Catch ex As Exception

End Try
ListDisks()
End Sub

Private Sub RichTextBox1_LinkClicked(sender As Object, e As LinkClickedEventArgs) Handles RichTextBox1.LinkClicked
TextBox1.Text = e.LinkText
End Sub

Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged
TextBox1.Text = ListView1.FocusedItem.SubItems(0).Text
End Sub
End Class

0 comments on commit 110dd02

Please sign in to comment.