Skip to content

Commit c435413

Browse files
update for new files
Co-Authored-By: VLTA of @TheFlightSims <176574466+anhvlt-2k6@users.noreply.github.com>
1 parent e7bad70 commit c435413

4 files changed

Lines changed: 63 additions & 87 deletions

File tree

Get WMI Basic.csproj

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,17 @@
9999
<Generator>MSBuild:Compile</Generator>
100100
<SubType>Designer</SubType>
101101
</ApplicationDefinition>
102+
<Compile Include="DefaultUI\ExceptionView.xaml.cs">
103+
<DependentUpon>ExceptionView.xaml</DependentUpon>
104+
</Compile>
105+
<Compile Include="WMIMethods\CommonException.cs" />
106+
<Compile Include="WMIMethods\CriticalException.cs" />
102107
<Compile Include="WMIMethods\MachineMethods.cs" />
103-
<Page Include="ConnectForm.xaml">
108+
<Page Include="DefaultUI\ConnectForm.xaml">
109+
<SubType>Designer</SubType>
110+
<Generator>MSBuild:Compile</Generator>
111+
</Page>
112+
<Page Include="DefaultUI\ExceptionView.xaml">
104113
<SubType>Designer</SubType>
105114
<Generator>MSBuild:Compile</Generator>
106115
</Page>
@@ -112,7 +121,7 @@
112121
<DependentUpon>App.xaml</DependentUpon>
113122
<SubType>Code</SubType>
114123
</Compile>
115-
<Compile Include="ConnectForm.xaml.cs">
124+
<Compile Include="DefaultUI\ConnectForm.xaml.cs">
116125
<DependentUpon>ConnectForm.xaml</DependentUpon>
117126
</Compile>
118127
<Compile Include="MainWindow.xaml.cs">

MainWindow.xaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@
2929
<MenuItem Header="View">
3030
<MenuItem Header="Refresh" Click="Refresh_Button"></MenuItem>
3131
</MenuItem>
32+
<MenuItem Header="Try throw exception">
33+
<MenuItem Header="Regular Exception" Click="RegularException_Click"></MenuItem>
34+
<MenuItem Header="Critical Exception" Click="CriticalException_Click" ></MenuItem>
35+
</MenuItem>
3236
</Menu>
3337
</Grid>
3438
<Grid Grid.Row="1">

MainWindow.xaml.cs

Lines changed: 36 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
using System;
1+
using GetWMIBasic.DefaultUI;
2+
using GetWMIBasic.WMIMethods;
3+
using System;
24
using System.Linq;
35
using System.Management;
4-
using System.Runtime.InteropServices;
56
using System.Security;
67
using System.Threading.Tasks;
78
using System.Windows;
89

9-
using GetWMIBasic.WMIMethods;
10-
1110
namespace GetWMIBasic
1211
{
1312
public partial class MainWindow : Window
@@ -41,14 +40,7 @@ private async void ConnectToAnotherComputer_Button(object sender, RoutedEventArg
4140
if (userCredential.computerName != "")
4241
{
4342
machine = null;
44-
if (!userCredential.computerName.Equals("localhost"))
45-
{
46-
machine = new MachineMethods(userCredential);
47-
}
48-
else
49-
{
50-
machine = new MachineMethods();
51-
}
43+
machine = !userCredential.computerName.Equals("localhost") ? new MachineMethods(userCredential) : new MachineMethods();
5244

5345
await Refresh();
5446
}
@@ -75,30 +67,9 @@ private async void Restart_Button(object sender, RoutedEventArgs e)
7567
machine.Connect("root\\cimv2");
7668
await machine.CallMethod("Win32_OperatingSystem", "*", "Win32Shutdown", new object[] { 6 });
7769
}
78-
catch (UnauthorizedAccessException ex)
70+
catch (Exception ex)
7971
{
80-
#if DEBUG
81-
MessageBox.Show(ex.ToString(), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
82-
#else
83-
MessageBox.Show($"Failed to catch the Authenticate with {machine.GetComputerName()}: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
84-
#endif
85-
}
86-
catch (COMException ex)
87-
{
88-
#if DEBUG
89-
MessageBox.Show(ex.ToString(), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
90-
#else
91-
MessageBox.Show($"Failed to reach {machine.GetComputerName()}: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
92-
#endif
93-
}
94-
95-
catch (ManagementException ex)
96-
{
97-
#if DEBUG
98-
MessageBox.Show(ex.ToString(), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
99-
#else
100-
MessageBox.Show($"Failed to catch the Management Method: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
101-
#endif
72+
exView.HandleException(ex);
10273
}
10374
finally
10475
{
@@ -123,30 +94,9 @@ private async void Shutdown_Button(object sender, RoutedEventArgs e)
12394
machine.Connect("root\\cimv2");
12495
await machine.CallMethod("Win32_OperatingSystem", "*", "Win32Shutdown", new object[] { 5 });
12596
}
126-
catch (UnauthorizedAccessException ex)
97+
catch (Exception ex)
12798
{
128-
#if DEBUG
129-
MessageBox.Show(ex.ToString(), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
130-
#else
131-
MessageBox.Show($"Failed to catch the Authenticate with {machine.GetComputerName()}: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
132-
#endif
133-
}
134-
catch (COMException ex)
135-
{
136-
#if DEBUG
137-
MessageBox.Show(ex.ToString(), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
138-
#else
139-
MessageBox.Show($"Failed to reach {machine.GetComputerName()}: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
140-
#endif
141-
}
142-
143-
catch (ManagementException ex)
144-
{
145-
#if DEBUG
146-
MessageBox.Show(ex.ToString(), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
147-
#else
148-
MessageBox.Show($"Failed to catch the Management Method: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
149-
#endif
99+
(new ExceptionView()).HandleException(ex);
150100
}
151101
finally
152102
{
@@ -160,6 +110,30 @@ private async void Refresh_Button(object sender, RoutedEventArgs e)
160110
await Refresh();
161111
}
162112

113+
private void RegularException_Click(object sender, RoutedEventArgs e)
114+
{
115+
try
116+
{
117+
throw new CommonException("This is a common exception example.");
118+
}
119+
catch (Exception ex)
120+
{
121+
exView.HandleException(ex);
122+
}
123+
}
124+
125+
private void CriticalException_Click(object sender, RoutedEventArgs e)
126+
{
127+
try
128+
{
129+
throw new CriticalException("This is a critical exception example.");
130+
}
131+
catch (Exception ex)
132+
{
133+
exView.HandleException(ex);
134+
}
135+
}
136+
163137
/*
164138
* Non-button methods
165139
*/
@@ -171,7 +145,7 @@ private async Task Refresh()
171145
{
172146
machine.Connect("root\\cimv2");
173147

174-
var biosProperties = machine.GetObjects("Win32_BIOS", "*");
148+
Task<ManagementObjectCollection> biosProperties = machine.GetObjects("Win32_BIOS", "Manufacturer, Name, SerialNumber, Version");
175149
foreach (ManagementObject biosProperty in (await biosProperties).Cast<ManagementObject>())
176150
{
177151
BIOS_Manufacturer.Text = biosProperty["Manufacturer"]?.ToString() ?? string.Empty;
@@ -180,7 +154,7 @@ private async Task Refresh()
180154
BIOS_Version.Text = biosProperty["Version"]?.ToString() ?? string.Empty;
181155
}
182156

183-
var osProperties = machine.GetObjects("Win32_ComputerSystem", "*");
157+
Task<ManagementObjectCollection> osProperties = machine.GetObjects("Win32_ComputerSystem", "Name, Domain, TotalPhysicalMemory, SystemType");
184158
foreach (ManagementObject osProperty in (await osProperties).Cast<ManagementObject>())
185159
{
186160
Computer_Name.Text = osProperty["Name"]?.ToString() ?? string.Empty;
@@ -189,30 +163,9 @@ private async Task Refresh()
189163
Computer_SysType.Text = osProperty["SystemType"]?.ToString() ?? string.Empty;
190164
}
191165
}
192-
catch (UnauthorizedAccessException ex)
193-
{
194-
#if DEBUG
195-
MessageBox.Show(ex.ToString(), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
196-
#else
197-
MessageBox.Show($"Failed to catch the Authenticate with {machine.GetComputerName()}: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
198-
#endif
199-
}
200-
catch (COMException ex)
201-
{
202-
#if DEBUG
203-
MessageBox.Show(ex.ToString(), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
204-
#else
205-
MessageBox.Show($"Failed to reach {machine.GetComputerName()}: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
206-
#endif
207-
}
208-
209-
catch (ManagementException ex)
166+
catch (Exception ex)
210167
{
211-
#if DEBUG
212-
MessageBox.Show(ex.ToString(), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
213-
#else
214-
MessageBox.Show($"Failed to catch the Management Method: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
215-
#endif
168+
exView.HandleException(ex);
216169
}
217170
finally
218171
{

WMIMethods/MachineMethods.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,18 @@
33
using System.Security;
44
using System.Threading.Tasks;
55

6+
/*
7+
* The default WMI method class includes:
8+
* 1. CriticalException.cs - A custom exception class for critical WMI errors
9+
* 2. CommonException.cs - A custom exception class for common WMI errors
10+
* 3. MachineMethods.cs - A base class for WMI operations on local and remote machines
11+
*/
612
namespace GetWMIBasic.WMIMethods
713
{
14+
/*
15+
* Machine Method class
16+
* It is used to connect and perform WMI tasks to local and remote machines through WMI
17+
*/
818
public class MachineMethods
919
{
1020
/*
@@ -90,11 +100,11 @@ public async Task CallMethod(string className, string fields, string methodName,
90100
ObjectQuery query = new ObjectQuery($"SELECT {fields} FROM {className}");
91101
await Task.Run(() =>
92102
{
93-
using (var searcher = new ManagementObjectSearcher(scope, query))
103+
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
94104
{
95105
foreach (ManagementObject manageObject in searcher.Get().Cast<ManagementObject>())
96106
{
97-
manageObject.InvokeMethod(methodName, args);
107+
_ = manageObject.InvokeMethod(methodName, args);
98108
}
99109
}
100110
});

0 commit comments

Comments
 (0)