mirror of
https://github.com/vinaypamnani/wmie2.git
synced 2026-01-06 08:29:59 +01:00
Add project files with updated auto-update references.
This commit is contained in:
commit
f304845029
63
.gitattributes
vendored
Normal file
63
.gitattributes
vendored
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
###############################################################################
|
||||||
|
# Set default behavior to automatically normalize line endings.
|
||||||
|
###############################################################################
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set default behavior for command prompt diff.
|
||||||
|
#
|
||||||
|
# This is need for earlier builds of msysgit that does not have it on by
|
||||||
|
# default for csharp files.
|
||||||
|
# Note: This is only used by command line
|
||||||
|
###############################################################################
|
||||||
|
#*.cs diff=csharp
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set the merge driver for project and solution files
|
||||||
|
#
|
||||||
|
# Merging from the command prompt will add diff markers to the files if there
|
||||||
|
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||||
|
# the diff markers are never inserted). Diff markers may cause the following
|
||||||
|
# file extensions to fail to load in VS. An alternative would be to treat
|
||||||
|
# these files as binary and thus will always conflict and require user
|
||||||
|
# intervention with every merge. To do so, just uncomment the entries below
|
||||||
|
###############################################################################
|
||||||
|
#*.sln merge=binary
|
||||||
|
#*.csproj merge=binary
|
||||||
|
#*.vbproj merge=binary
|
||||||
|
#*.vcxproj merge=binary
|
||||||
|
#*.vcproj merge=binary
|
||||||
|
#*.dbproj merge=binary
|
||||||
|
#*.fsproj merge=binary
|
||||||
|
#*.lsproj merge=binary
|
||||||
|
#*.wixproj merge=binary
|
||||||
|
#*.modelproj merge=binary
|
||||||
|
#*.sqlproj merge=binary
|
||||||
|
#*.wwaproj merge=binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# behavior for image files
|
||||||
|
#
|
||||||
|
# image files are treated as binary by default.
|
||||||
|
###############################################################################
|
||||||
|
#*.jpg binary
|
||||||
|
#*.png binary
|
||||||
|
#*.gif binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# diff behavior for common document formats
|
||||||
|
#
|
||||||
|
# Convert binary document formats to text before diffing them. This feature
|
||||||
|
# is only available from the command line. Turn it on by uncommenting the
|
||||||
|
# entries below.
|
||||||
|
###############################################################################
|
||||||
|
#*.doc diff=astextplain
|
||||||
|
#*.DOC diff=astextplain
|
||||||
|
#*.docx diff=astextplain
|
||||||
|
#*.DOCX diff=astextplain
|
||||||
|
#*.dot diff=astextplain
|
||||||
|
#*.DOT diff=astextplain
|
||||||
|
#*.pdf diff=astextplain
|
||||||
|
#*.PDF diff=astextplain
|
||||||
|
#*.rtf diff=astextplain
|
||||||
|
#*.RTF diff=astextplain
|
||||||
245
.gitignore
vendored
Normal file
245
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,245 @@
|
||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.userosscache
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
*.userprefs
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
[Dd]ebug/
|
||||||
|
[Dd]ebugPublic/
|
||||||
|
[Rr]elease/
|
||||||
|
[Rr]eleases/
|
||||||
|
[Xx]64/
|
||||||
|
[Xx]86/
|
||||||
|
[Bb]uild/
|
||||||
|
bld/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
|
||||||
|
# Visual Studio 2015 cache/options directory
|
||||||
|
.vs/
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
#wwwroot/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
# NUNIT
|
||||||
|
*.VisualState.xml
|
||||||
|
TestResult.xml
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
[Dd]ebugPS/
|
||||||
|
[Rr]eleasePS/
|
||||||
|
dlldata.c
|
||||||
|
|
||||||
|
# DNX
|
||||||
|
project.lock.json
|
||||||
|
artifacts/
|
||||||
|
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*_i.h
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*.log
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.svclog
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Chutzpah Test files
|
||||||
|
_Chutzpah*
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opendb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
*.VC.db
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
*.sap
|
||||||
|
|
||||||
|
# TFS 2012 Local Workspace
|
||||||
|
$tf/
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
*.DotSettings.user
|
||||||
|
|
||||||
|
# JustCode is a .NET coding add-in
|
||||||
|
.JustCode
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
_NCrunch_*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
nCrunchTemp_*
|
||||||
|
|
||||||
|
# MightyMoose
|
||||||
|
*.mm.*
|
||||||
|
AutoTest.Net/
|
||||||
|
|
||||||
|
# Web workbench (sass)
|
||||||
|
.sass-cache/
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
[Ee]xpress/
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
DocProject/buildhelp/
|
||||||
|
DocProject/Help/*.HxT
|
||||||
|
DocProject/Help/*.HxC
|
||||||
|
DocProject/Help/*.hhc
|
||||||
|
DocProject/Help/*.hhk
|
||||||
|
DocProject/Help/*.hhp
|
||||||
|
DocProject/Help/Html2
|
||||||
|
DocProject/Help/html
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
publish/
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.azurePubxml
|
||||||
|
|
||||||
|
# TODO: Un-comment the next line if you do not want to checkin
|
||||||
|
# your web deploy settings because they may include unencrypted
|
||||||
|
# passwords
|
||||||
|
#*.pubxml
|
||||||
|
*.publishproj
|
||||||
|
|
||||||
|
# NuGet Packages
|
||||||
|
*.nupkg
|
||||||
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
**/packages/*
|
||||||
|
# except build/, which is used as an MSBuild target.
|
||||||
|
!**/packages/build/
|
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
|
#!**/packages/repositories.config
|
||||||
|
# NuGet v3's project.json files produces more ignoreable files
|
||||||
|
*.nuget.props
|
||||||
|
*.nuget.targets
|
||||||
|
|
||||||
|
# Microsoft Azure Build Output
|
||||||
|
csx/
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Microsoft Azure Emulator
|
||||||
|
ecf/
|
||||||
|
rcf/
|
||||||
|
|
||||||
|
# Microsoft Azure ApplicationInsights config file
|
||||||
|
ApplicationInsights.config
|
||||||
|
|
||||||
|
# Windows Store app package directory
|
||||||
|
AppPackages/
|
||||||
|
BundleArtifacts/
|
||||||
|
|
||||||
|
# Visual Studio cache files
|
||||||
|
# files ending in .cache can be ignored
|
||||||
|
*.[Cc]ache
|
||||||
|
# but keep track of directories ending in .cache
|
||||||
|
!*.[Cc]ache/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
ClientBin/
|
||||||
|
[Ss]tyle[Cc]op.*
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.dbproj.schemaview
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
node_modules/
|
||||||
|
orleans.codegen.cs
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
Generated_Code/
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file
|
||||||
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
|
# because we have git ;-)
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
UpgradeLog*.htm
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
*.mdf
|
||||||
|
*.ldf
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
*.rdl.data
|
||||||
|
*.bim.layout
|
||||||
|
*.bim_*.settings
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
FakesAssemblies/
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
*.GhostDoc.xml
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
.ntvs_analysis.dat
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
*.plg
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
*.opt
|
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output
|
||||||
|
**/*.HTMLClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/ModelManifest.xml
|
||||||
|
**/*.Server/GeneratedArtifacts
|
||||||
|
**/*.Server/ModelManifest.xml
|
||||||
|
_Pvt_Extensions
|
||||||
|
|
||||||
|
# LightSwitch generated files
|
||||||
|
GeneratedArtifacts/
|
||||||
|
ModelManifest.xml
|
||||||
|
|
||||||
|
# Paket dependency manager
|
||||||
|
.paket/paket.exe
|
||||||
|
|
||||||
|
# FAKE - F# Make
|
||||||
|
.fake/
|
||||||
24
WmiExplorer.sln
Normal file
24
WmiExplorer.sln
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 2013
|
||||||
|
VisualStudioVersion = 12.0.30723.0
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WmiExplorer", "WmiExplorer\WmiExplorer.csproj", "{781647DE-1788-4B7C-9289-D0323FDF562A}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B9BD9632-8046-4414-B261-35222239F891}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{781647DE-1788-4B7C-9289-D0323FDF562A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{781647DE-1788-4B7C-9289-D0323FDF562A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{781647DE-1788-4B7C-9289-D0323FDF562A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{781647DE-1788-4B7C-9289-D0323FDF562A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
30
WmiExplorer/ChangeLog.txt
Normal file
30
WmiExplorer/ChangeLog.txt
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
Version 2.0.0.2 [10-05-2017]
|
||||||
|
|
||||||
|
* Migration to GitHub.
|
||||||
|
|
||||||
|
Version 2.0.0.0 [10-27-2014]
|
||||||
|
|
||||||
|
* New: Asynchronous mode for enumeration of classes and instances in the background.
|
||||||
|
* New: Method execution.
|
||||||
|
* New: SMS (System Center Configuration Manager) Mode.
|
||||||
|
* New: Property tab showing properties of selected class.
|
||||||
|
* New: Input & Output parameter information in Methods tab with Help information.
|
||||||
|
* New: List View output mode for Query Results.
|
||||||
|
* New: Update Notifications when a new version of WMI Explorer is available.
|
||||||
|
* New: Connect to multiple computers at the same time.
|
||||||
|
* New: Quick Filter for Classes and Instances.
|
||||||
|
* New: User Preferences.
|
||||||
|
* New: View WMI Provider Process Information.
|
||||||
|
* Improved: UI display on higher scaling levels and resolution.
|
||||||
|
* Improved: Connect As option to provide alternate credentials.
|
||||||
|
* Improved: Display of embedded object names in Property Grid.
|
||||||
|
|
||||||
|
|
||||||
|
Version 1.0.0.8 [01-07-2014]
|
||||||
|
|
||||||
|
* BugFix: Fixed a crash that occurs due to use of incorrectly displayed right-click context menu when no items are selected in Class/Instance list view.
|
||||||
|
|
||||||
|
|
||||||
|
Version 1.0.0.7 [01-07-2014]
|
||||||
|
|
||||||
|
* Initial Release.
|
||||||
43
WmiExplorer/Classes/Enums.cs
Normal file
43
WmiExplorer/Classes/Enums.cs
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
public enum MessageCategory
|
||||||
|
{
|
||||||
|
Unknown,
|
||||||
|
Info,
|
||||||
|
Action,
|
||||||
|
Warn,
|
||||||
|
Error,
|
||||||
|
Cache,
|
||||||
|
Sms,
|
||||||
|
None,
|
||||||
|
}
|
||||||
|
|
||||||
|
[Flags]
|
||||||
|
public enum EnumOptions
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
IncludeSystem = 1,
|
||||||
|
IncludeCim = 2,
|
||||||
|
IncludePerf = 4,
|
||||||
|
IncludeMsft = 8,
|
||||||
|
ShowNullInstanceValues = 16,
|
||||||
|
ShowSystemProperties = 32,
|
||||||
|
ExcludeSmsCollections = 64,
|
||||||
|
ExcludeSmsInventory = 128
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class ColorCategory
|
||||||
|
{
|
||||||
|
public static Color Unknown = Color.Gold;
|
||||||
|
public static Color Info = Color.YellowGreen;
|
||||||
|
public static Color Action = Color.Khaki;
|
||||||
|
public static Color Warn = Color.Yellow;
|
||||||
|
public static Color Error = Color.Red;
|
||||||
|
public static Color Cache = Color.LightGreen;
|
||||||
|
public static Color Sms = Color.LightSkyBlue;
|
||||||
|
public static Color None = Color.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
58
WmiExplorer/Classes/Helpers.cs
Normal file
58
WmiExplorer/Classes/Helpers.cs
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Management;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using WmiExplorer.Sms;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
public static class Helpers
|
||||||
|
{
|
||||||
|
public static Form CenterForm(this Form child, Form parent)
|
||||||
|
{
|
||||||
|
child.StartPosition = FormStartPosition.Manual;
|
||||||
|
child.Location = new Point(parent.Location.X + (parent.Width - child.Width) / 2, parent.Location.Y + (parent.Height - child.Height) / 2);
|
||||||
|
return child;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TreeNode GetRootNode(this TreeNode treeNode)
|
||||||
|
{
|
||||||
|
var rootNode = treeNode;
|
||||||
|
|
||||||
|
while (rootNode.Parent != null)
|
||||||
|
{
|
||||||
|
rootNode = rootNode.Parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rootNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ConnectionOptions GetRootNodeCredentials(TreeNode treeNode)
|
||||||
|
{
|
||||||
|
var rootNode = treeNode.GetRootNode();
|
||||||
|
return ((WmiNode)rootNode.Tag).Connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClient GetSmsClient(TreeNode treeNode)
|
||||||
|
{
|
||||||
|
var rootNode = treeNode;
|
||||||
|
|
||||||
|
while (rootNode.Parent != null)
|
||||||
|
{
|
||||||
|
rootNode = rootNode.Parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ((WmiNode)rootNode.Tag).SmsClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool IsNodeDisconnected(TreeNode treeNode)
|
||||||
|
{
|
||||||
|
WmiNode wmiNode = treeNode.Tag as WmiNode;
|
||||||
|
if (wmiNode != null && wmiNode.IsRootNode && wmiNode.IsConnected == false)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
103
WmiExplorer/Classes/ListViewColumnSorter.cs
Normal file
103
WmiExplorer/Classes/ListViewColumnSorter.cs
Normal file
|
|
@ -0,0 +1,103 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
// How to sort a ListView control by a column in Visual C#
|
||||||
|
// http://support.microsoft.com/kb/319401
|
||||||
|
|
||||||
|
internal class ListViewColumnSorter : IComparer
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Specifies the column to be sorted
|
||||||
|
/// </summary>
|
||||||
|
private int _columnToSort;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Specifies the order in which to sort (i.e. 'Ascending').
|
||||||
|
/// </summary>
|
||||||
|
private SortOrder _orderOfSort;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Case insensitive comparer object
|
||||||
|
/// </summary>
|
||||||
|
private readonly CaseInsensitiveComparer _objectCompare;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Class constructor. Initializes various elements
|
||||||
|
/// </summary>
|
||||||
|
public ListViewColumnSorter()
|
||||||
|
{
|
||||||
|
// Initialize the column to '0'
|
||||||
|
_columnToSort = 0;
|
||||||
|
|
||||||
|
// Initialize the sort order to 'none'
|
||||||
|
_orderOfSort = SortOrder.None;
|
||||||
|
|
||||||
|
// Initialize the CaseInsensitiveComparer object
|
||||||
|
_objectCompare = new CaseInsensitiveComparer();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This method is inherited from the IComparer interface. It compares the two objects passed using a case insensitive comparison.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="x">First object to be compared</param>
|
||||||
|
/// <param name="y">Second object to be compared</param>
|
||||||
|
/// <returns>The result of the comparison. "0" if equal, negative if 'x' is less than 'y' and positive if 'x' is greater than 'y'</returns>
|
||||||
|
public int Compare(object x, object y)
|
||||||
|
{
|
||||||
|
// Cast the objects to be compared to ListViewItem objects
|
||||||
|
ListViewItem listviewX = (ListViewItem)x;
|
||||||
|
ListViewItem listviewY = (ListViewItem)y;
|
||||||
|
|
||||||
|
// Compare the two items
|
||||||
|
var compareResult = _objectCompare.Compare(listviewX.SubItems[_columnToSort].Text, listviewY.SubItems[_columnToSort].Text);
|
||||||
|
|
||||||
|
// Calculate correct return value based on object comparison
|
||||||
|
if (_orderOfSort == SortOrder.Ascending)
|
||||||
|
{
|
||||||
|
// Ascending sort is selected, return normal result of compare operation
|
||||||
|
return compareResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_orderOfSort == SortOrder.Descending)
|
||||||
|
{
|
||||||
|
// Descending sort is selected, return negative result of compare operation
|
||||||
|
return (-compareResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return '0' to indicate they are equal
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the number of the column to which to apply the sorting operation (Defaults to '0').
|
||||||
|
/// </summary>
|
||||||
|
public int SortColumn
|
||||||
|
{
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_columnToSort = value;
|
||||||
|
}
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _columnToSort;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the order of sorting to apply (for example, 'Ascending' or 'Descending').
|
||||||
|
/// </summary>
|
||||||
|
public SortOrder Order
|
||||||
|
{
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_orderOfSort = value;
|
||||||
|
}
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _orderOfSort;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
128
WmiExplorer/Classes/ListViewExtensions.cs
Normal file
128
WmiExplorer/Classes/ListViewExtensions.cs
Normal file
|
|
@ -0,0 +1,128 @@
|
||||||
|
using System;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
// ReSharper disable InconsistentNaming
|
||||||
|
// ReSharper disable UnusedMember.Local
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
// Sort listview Columns and Set Sort Arrow Icon on Column Header
|
||||||
|
// http://www.codeproject.com/Tips/734463/Sort-listview-Columns-and-Set-Sort-Arrow-Icon-on-C
|
||||||
|
internal static class ListViewExtensions
|
||||||
|
{
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct LVCOLUMN
|
||||||
|
{
|
||||||
|
public Int32 mask;
|
||||||
|
public Int32 cx;
|
||||||
|
|
||||||
|
[MarshalAs(UnmanagedType.LPTStr)]
|
||||||
|
public string pszText;
|
||||||
|
|
||||||
|
public IntPtr hbm;
|
||||||
|
public Int32 cchTextMax;
|
||||||
|
public Int32 fmt;
|
||||||
|
public Int32 iSubItem;
|
||||||
|
public Int32 iImage;
|
||||||
|
public Int32 iOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
private const Int32 HDI_WIDTH = 0x0001;
|
||||||
|
private const Int32 HDI_HEIGHT = HDI_WIDTH;
|
||||||
|
private const Int32 HDI_TEXT = 0x0002;
|
||||||
|
private const Int32 HDI_FORMAT = 0x0004;
|
||||||
|
private const Int32 HDI_LPARAM = 0x0008;
|
||||||
|
private const Int32 HDI_BITMAP = 0x0010;
|
||||||
|
private const Int32 HDI_IMAGE = 0x0020;
|
||||||
|
private const Int32 HDI_DI_SETITEM = 0x0040;
|
||||||
|
private const Int32 HDI_ORDER = 0x0080;
|
||||||
|
private const Int32 HDI_FILTER = 0x0100;
|
||||||
|
|
||||||
|
private const Int32 HDF_LEFT = 0x0000;
|
||||||
|
private const Int32 HDF_RIGHT = 0x0001;
|
||||||
|
private const Int32 HDF_CENTER = 0x0002;
|
||||||
|
private const Int32 HDF_JUSTIFYMASK = 0x0003;
|
||||||
|
private const Int32 HDF_RTLREADING = 0x0004;
|
||||||
|
private const Int32 HDF_OWNERDRAW = 0x8000;
|
||||||
|
private const Int32 HDF_STRING = 0x4000;
|
||||||
|
private const Int32 HDF_BITMAP = 0x2000;
|
||||||
|
private const Int32 HDF_BITMAP_ON_RIGHT = 0x1000;
|
||||||
|
private const Int32 HDF_IMAGE = 0x0800;
|
||||||
|
private const Int32 HDF_SORTUP = 0x0400;
|
||||||
|
private const Int32 HDF_SORTDOWN = 0x0200;
|
||||||
|
|
||||||
|
private const Int32 LVM_FIRST = 0x1000; // List messages
|
||||||
|
private const Int32 LVM_GETHEADER = LVM_FIRST + 31;
|
||||||
|
private const Int32 HDM_FIRST = 0x1200; // Header messages
|
||||||
|
private const Int32 HDM_SETIMAGELIST = HDM_FIRST + 8;
|
||||||
|
private const Int32 HDM_GETIMAGELIST = HDM_FIRST + 9;
|
||||||
|
private const Int32 HDM_GETITEM = HDM_FIRST + 11;
|
||||||
|
private const Int32 HDM_SETITEM = HDM_FIRST + 12;
|
||||||
|
|
||||||
|
//This method is used to set arrow icon
|
||||||
|
public static void SetSortIcon(this ListView listView, int columnIndex, SortOrder order)
|
||||||
|
{
|
||||||
|
IntPtr columnHeader = NativeMethods.SendMessage(listView.Handle, LVM_GETHEADER, IntPtr.Zero, IntPtr.Zero);
|
||||||
|
|
||||||
|
for (int columnNumber = 0; columnNumber <= listView.Columns.Count - 1; columnNumber++)
|
||||||
|
{
|
||||||
|
IntPtr columnPtr = new IntPtr(columnNumber);
|
||||||
|
LVCOLUMN lvColumn = new LVCOLUMN();
|
||||||
|
lvColumn.mask = HDI_FORMAT;
|
||||||
|
|
||||||
|
NativeMethods.SendMessageLVCOLUMN(columnHeader, HDM_GETITEM, columnPtr, ref lvColumn);
|
||||||
|
|
||||||
|
if (!(order == SortOrder.None) && columnNumber == columnIndex)
|
||||||
|
{
|
||||||
|
switch (order)
|
||||||
|
{
|
||||||
|
case SortOrder.Ascending:
|
||||||
|
lvColumn.fmt &= ~HDF_SORTDOWN;
|
||||||
|
lvColumn.fmt |= HDF_SORTUP;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SortOrder.Descending:
|
||||||
|
lvColumn.fmt &= ~HDF_SORTUP;
|
||||||
|
lvColumn.fmt |= HDF_SORTDOWN;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
lvColumn.fmt |= (HDF_LEFT | HDF_BITMAP_ON_RIGHT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lvColumn.fmt &= ~HDF_SORTDOWN & ~HDF_SORTUP & ~HDF_BITMAP_ON_RIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
|
NativeMethods.SendMessageLVCOLUMN(columnHeader, HDM_SETITEM, columnPtr, ref lvColumn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reference link:
|
||||||
|
// http://stackoverflow.com/questions/14133225/listview-autoresizecolumns-based-on-both-column-content-and-header
|
||||||
|
// Reference link
|
||||||
|
public static void ResizeColumns(this ListView lv)
|
||||||
|
{
|
||||||
|
//lv.AutoResizeColumns(lv.Items.Count > 0
|
||||||
|
// ? ColumnHeaderAutoResizeStyle.ColumnContent
|
||||||
|
// : ColumnHeaderAutoResizeStyle.HeaderSize);
|
||||||
|
|
||||||
|
lv.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||||
|
lv.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
|
||||||
|
|
||||||
|
//lv.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||||
|
//ListView.ColumnHeaderCollection cc = lv.Columns;
|
||||||
|
//for (int i = 0; i < cc.Count; i++)
|
||||||
|
//{
|
||||||
|
// int colWidth = TextRenderer.MeasureText(cc[i].Text, lv.Font).Width + 10;
|
||||||
|
// if (colWidth > cc[i].Width)
|
||||||
|
// {
|
||||||
|
// cc[i].Width = colWidth;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ReSharper restore InconsistentNaming
|
||||||
|
// ReSharper restore UnusedMember.Local
|
||||||
236
WmiExplorer/Classes/ManagementBaseObjectPropertyDescriptor.cs
Normal file
236
WmiExplorer/Classes/ManagementBaseObjectPropertyDescriptor.cs
Normal file
|
|
@ -0,0 +1,236 @@
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Management;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required for Implementation of ICustomTypeDescriptor
|
||||||
|
/// Reference Links and Tutorials:
|
||||||
|
/// http://www.codeproject.com/Articles/539202/CIMTool-for-Windows-Management-Instrumentation-Par
|
||||||
|
/// http://www.codeproject.com/Articles/4448/Customized-display-of-collection-data-in-a-Propert
|
||||||
|
/// http://msdn.microsoft.com/en-us/magazine/cc163816.aspx
|
||||||
|
/// </summary>
|
||||||
|
[TypeConverter(typeof(ManagementBaseObjectWConverter))]
|
||||||
|
internal class ManagementBaseObjectPropertyDescriptor : PropertyDescriptor
|
||||||
|
{
|
||||||
|
protected string category;
|
||||||
|
private readonly PropertyData _property;
|
||||||
|
private readonly ManagementBaseObjectW _wrapperObject;
|
||||||
|
|
||||||
|
public ManagementBaseObjectPropertyDescriptor(ManagementBaseObjectW actualObject, PropertyData property)
|
||||||
|
: base(property.Name, null)
|
||||||
|
{
|
||||||
|
_wrapperObject = actualObject;
|
||||||
|
_property = property;
|
||||||
|
|
||||||
|
if (_property.Origin == "___SYSTEM")
|
||||||
|
category = "System Properties";
|
||||||
|
else
|
||||||
|
category = "Properties";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string Category
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return category;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Type ComponentType
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _wrapperObject.GetType();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string Description
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// Embedded instance
|
||||||
|
if (_property.Value is ManagementBaseObject || _property.Type == CimType.Object)
|
||||||
|
{
|
||||||
|
string derivation;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
derivation = "Embedded " + _property.Qualifiers["CIMTYPE"].Value;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
derivation = "Embedded Object";
|
||||||
|
}
|
||||||
|
|
||||||
|
return derivation;
|
||||||
|
}
|
||||||
|
|
||||||
|
string retVal = "Type - " + _property.Type;
|
||||||
|
|
||||||
|
if (_property.IsArray)
|
||||||
|
retVal += " []";
|
||||||
|
|
||||||
|
if (_property.Type == CimType.DateTime && _property.Value != null && !_property.IsArray)
|
||||||
|
retVal = retVal + " - Normalized Value: " + GetNormalizedDate(_property);
|
||||||
|
|
||||||
|
string pDesc = "";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ManagementClass mClass = new ManagementClass(_wrapperObject.ClassPath.Path);
|
||||||
|
mClass.Options.UseAmendedQualifiers = true;
|
||||||
|
|
||||||
|
foreach (QualifierData qd in mClass.Properties[_property.Name].Qualifiers)
|
||||||
|
{
|
||||||
|
if (qd.Name == "Description")
|
||||||
|
pDesc = qd.Value.ToString();
|
||||||
|
|
||||||
|
if (qd.Name == "lazy")
|
||||||
|
retVal += Environment.NewLine + "Lazy Property";
|
||||||
|
|
||||||
|
if (qd.Name == "enumeration")
|
||||||
|
retVal += Environment.NewLine + "Enumeration: " + qd.Value;
|
||||||
|
// TODO: Find other qualifier containing enumerations (Values, ValueMap)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
pDesc = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pDesc != "")
|
||||||
|
retVal += Environment.NewLine + pDesc;
|
||||||
|
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string DisplayName
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
string retVal = _property.Name;
|
||||||
|
|
||||||
|
foreach (QualifierData q in _property.Qualifiers)
|
||||||
|
{
|
||||||
|
if (q.Name == "key")
|
||||||
|
retVal = "*" + retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool IsReadOnly
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Type PropertyType
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return GetDotNetType();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CanResetValue(object component)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Type GetDotNetType()
|
||||||
|
{
|
||||||
|
if ((_property.Type == CimType.Object) && (_property.Value is ManagementBaseObject))
|
||||||
|
{
|
||||||
|
if (_property.Value is ManagementClass)
|
||||||
|
{
|
||||||
|
return typeof(ManagementClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_property.Value is ManagementObject)
|
||||||
|
{
|
||||||
|
return typeof(ManagementObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
return typeof(ManagementBaseObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ManagementBaseObjectW.GetTypeFor(_property.Type, _property.IsArray);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override object GetValue(object component)
|
||||||
|
{
|
||||||
|
// To expand and display embedded instances, such as Props for SMS SCI classes.
|
||||||
|
var val = ((ManagementBaseObjectW)component)[_property.Name];
|
||||||
|
|
||||||
|
if (val is ManagementBaseObject[])
|
||||||
|
{
|
||||||
|
ManagementBaseObject[] props = (ManagementBaseObject[])val;
|
||||||
|
ManagementBaseObjectW[] propvalues = new ManagementBaseObjectW[props.Length];
|
||||||
|
for (int i = 0; i < props.Length; i++)
|
||||||
|
{
|
||||||
|
propvalues[i] = new ManagementBaseObjectW(props[i]);
|
||||||
|
}
|
||||||
|
return propvalues;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val is ManagementBaseObject)
|
||||||
|
{
|
||||||
|
ManagementBaseObject props = (ManagementBaseObject)val;
|
||||||
|
ManagementBaseObjectW propvalue = new ManagementBaseObjectW(props);
|
||||||
|
return propvalue;
|
||||||
|
}
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void ResetValue(object component)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void SetValue(object component, object value)
|
||||||
|
{
|
||||||
|
((ManagementBaseObjectW)component)[_property.Name] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool ShouldSerializeValue(object component)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static object GetNormalizedDate(PropertyData propertyData)
|
||||||
|
{
|
||||||
|
object retVal = propertyData.Value;
|
||||||
|
|
||||||
|
if (propertyData.Type == CimType.DateTime && propertyData.Value != null)
|
||||||
|
{
|
||||||
|
//20080409032454.676631-420
|
||||||
|
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
||||||
|
// Y 2 0 0 8 M 0 4 D 0 9 H 0 3 M 2 4 S 5 4 . m 6 7 6 6 3 1 U-420
|
||||||
|
string dateString = propertyData.Value.ToString();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
retVal = new DateTime(
|
||||||
|
int.Parse(dateString.Substring(0, 4)),
|
||||||
|
int.Parse(dateString.Substring(4, 2)),
|
||||||
|
int.Parse(dateString.Substring(6, 2)),
|
||||||
|
int.Parse(dateString.Substring(8, 2)),
|
||||||
|
int.Parse(dateString.Substring(10, 2)),
|
||||||
|
int.Parse(dateString.Substring(12, 2)),
|
||||||
|
int.Parse(dateString.Substring(15, 6)) / 1000, DateTimeKind.Local);
|
||||||
|
}
|
||||||
|
catch (ArgumentOutOfRangeException)
|
||||||
|
{
|
||||||
|
retVal = dateString;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
339
WmiExplorer/Classes/ManagementBaseObjectW.cs
Normal file
339
WmiExplorer/Classes/ManagementBaseObjectW.cs
Normal file
|
|
@ -0,0 +1,339 @@
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Management;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Wrapper Class for ManagementBaseObject
|
||||||
|
/// Uses ManagementBaseObjectWConverter to display appropriate text if Embedded Objects are expanded.
|
||||||
|
/// Reference Links and Tutorials:
|
||||||
|
/// http://www.codeproject.com/Articles/539202/CIMTool-for-Windows-Management-Instrumentation-Par
|
||||||
|
/// http://www.codeproject.com/Articles/4448/Customized-display-of-collection-data-in-a-Propert
|
||||||
|
/// http://msdn.microsoft.com/en-us/magazine/cc163816.aspx
|
||||||
|
/// </summary>
|
||||||
|
[TypeConverter(typeof(ManagementBaseObjectWConverter))]
|
||||||
|
internal class ManagementBaseObjectW : ICustomTypeDescriptor
|
||||||
|
{
|
||||||
|
private readonly ManagementBaseObject _wrapperObject;
|
||||||
|
|
||||||
|
private ManagementPath _classPath;
|
||||||
|
|
||||||
|
private PropertyDataCollection _properties;
|
||||||
|
|
||||||
|
private QualifierDataCollection _qualifiers;
|
||||||
|
|
||||||
|
private PropertyDataCollection _systemProperties;
|
||||||
|
|
||||||
|
private PropertyDescriptorCollection _propertyDescriptorCollection;
|
||||||
|
|
||||||
|
public ManagementBaseObjectW(ManagementBaseObject actualObject)
|
||||||
|
{
|
||||||
|
_wrapperObject = actualObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ManagementPath ClassPath
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_classPath == null)
|
||||||
|
{
|
||||||
|
_classPath = _wrapperObject.ClassPath;
|
||||||
|
}
|
||||||
|
return _classPath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IncludeNullProperties { get; set; }
|
||||||
|
|
||||||
|
public bool IncludeSystemProperties { get; set; }
|
||||||
|
|
||||||
|
public PropertyDataCollection Properties
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_properties == null)
|
||||||
|
{
|
||||||
|
_properties = _wrapperObject.Properties;
|
||||||
|
}
|
||||||
|
return _properties;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual QualifierDataCollection Qualifiers
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_qualifiers == null)
|
||||||
|
{
|
||||||
|
_qualifiers = _wrapperObject.Qualifiers;
|
||||||
|
}
|
||||||
|
return _qualifiers;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual PropertyDataCollection SystemProperties
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_systemProperties == null)
|
||||||
|
{
|
||||||
|
_systemProperties = _wrapperObject.SystemProperties;
|
||||||
|
}
|
||||||
|
return _systemProperties;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public object this[string propertyName]
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _wrapperObject[propertyName];
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_wrapperObject[propertyName] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Type GetTypeFor(CimType cimType, bool isArray)
|
||||||
|
{
|
||||||
|
switch (cimType)
|
||||||
|
{
|
||||||
|
case CimType.None:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CimType.SInt8:
|
||||||
|
if (isArray)
|
||||||
|
return typeof(sbyte[]);
|
||||||
|
return typeof(sbyte);
|
||||||
|
|
||||||
|
case CimType.UInt8:
|
||||||
|
if (isArray)
|
||||||
|
return typeof(byte[]);
|
||||||
|
return typeof(byte);
|
||||||
|
|
||||||
|
case CimType.SInt16:
|
||||||
|
if (isArray)
|
||||||
|
return typeof(short[]);
|
||||||
|
return typeof(short);
|
||||||
|
|
||||||
|
case CimType.UInt16:
|
||||||
|
if (isArray)
|
||||||
|
return typeof(ushort[]);
|
||||||
|
return typeof(ushort);
|
||||||
|
|
||||||
|
case CimType.SInt32:
|
||||||
|
if (isArray)
|
||||||
|
return typeof(int[]);
|
||||||
|
return typeof(int);
|
||||||
|
|
||||||
|
case CimType.UInt32:
|
||||||
|
if (isArray)
|
||||||
|
return typeof(uint[]);
|
||||||
|
return typeof(uint);
|
||||||
|
|
||||||
|
case CimType.SInt64:
|
||||||
|
if (isArray)
|
||||||
|
return typeof(long[]);
|
||||||
|
return typeof(long);
|
||||||
|
|
||||||
|
case CimType.UInt64:
|
||||||
|
if (isArray)
|
||||||
|
return typeof(ulong[]);
|
||||||
|
return typeof(ulong);
|
||||||
|
|
||||||
|
case CimType.Real32:
|
||||||
|
if (isArray)
|
||||||
|
return typeof(float[]);
|
||||||
|
return typeof(float);
|
||||||
|
|
||||||
|
case CimType.Real64:
|
||||||
|
if (isArray)
|
||||||
|
return typeof(double[]);
|
||||||
|
return typeof(double);
|
||||||
|
|
||||||
|
case CimType.Boolean:
|
||||||
|
if (isArray)
|
||||||
|
return typeof(bool[]);
|
||||||
|
return typeof(bool);
|
||||||
|
|
||||||
|
case CimType.String:
|
||||||
|
if (isArray)
|
||||||
|
return typeof(string[]);
|
||||||
|
return typeof(string);
|
||||||
|
|
||||||
|
case CimType.DateTime:
|
||||||
|
if (isArray)
|
||||||
|
return typeof(DateTime[]);
|
||||||
|
return typeof(DateTime);
|
||||||
|
|
||||||
|
case CimType.Reference:
|
||||||
|
if (isArray)
|
||||||
|
return typeof(object[]);
|
||||||
|
return typeof(object);
|
||||||
|
|
||||||
|
case CimType.Char16:
|
||||||
|
if (isArray)
|
||||||
|
return typeof(char[]);
|
||||||
|
return typeof(char);
|
||||||
|
|
||||||
|
case CimType.Object:
|
||||||
|
|
||||||
|
if (isArray)
|
||||||
|
return typeof(object[]);
|
||||||
|
return typeof(object);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool CompareTo(ManagementBaseObject otherObject, ComparisonSettings settings)
|
||||||
|
{
|
||||||
|
return _wrapperObject.CompareTo(otherObject, settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PropertyDescriptorCollection GetProperties()
|
||||||
|
{
|
||||||
|
if (_propertyDescriptorCollection == null)
|
||||||
|
{
|
||||||
|
_propertyDescriptorCollection = new PropertyDescriptorCollection(null);
|
||||||
|
|
||||||
|
// Properties
|
||||||
|
foreach (PropertyData property in Properties)
|
||||||
|
{
|
||||||
|
if (_propertyDescriptorCollection.Find(property.Name, true) == null)
|
||||||
|
{
|
||||||
|
if (IncludeNullProperties)
|
||||||
|
{
|
||||||
|
PropertyDescriptor propertyDescriptor = GetPropertyDescriptor(property);
|
||||||
|
_propertyDescriptorCollection.Add(propertyDescriptor);
|
||||||
|
}
|
||||||
|
else if (property.Value != null)
|
||||||
|
{
|
||||||
|
PropertyDescriptor propertyDescriptor = GetPropertyDescriptor(property);
|
||||||
|
_propertyDescriptorCollection.Add(propertyDescriptor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// System Properties
|
||||||
|
if (IncludeSystemProperties)
|
||||||
|
{
|
||||||
|
foreach (PropertyData property in SystemProperties)
|
||||||
|
{
|
||||||
|
if (_propertyDescriptorCollection.Find(property.Name, true) == null)
|
||||||
|
{
|
||||||
|
PropertyDescriptor propertyDescriptor = GetPropertyDescriptor(property);
|
||||||
|
_propertyDescriptorCollection.Add(propertyDescriptor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return _propertyDescriptorCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public object GetPropertyQualifierValue(string propertyName, string qualifierName)
|
||||||
|
{
|
||||||
|
return _wrapperObject.GetPropertyQualifierValue(propertyName, qualifierName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public object GetPropertyValue(string propertyName)
|
||||||
|
{
|
||||||
|
//not used by PropertyGrid
|
||||||
|
return _wrapperObject.GetPropertyValue(propertyName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public object GetQualifierValue(string qualifierName)
|
||||||
|
{
|
||||||
|
return _wrapperObject.GetQualifierValue(qualifierName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetText(TextFormat format)
|
||||||
|
{
|
||||||
|
return _wrapperObject.GetText(format);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ICustomTypeDescriptor implementation
|
||||||
|
AttributeCollection ICustomTypeDescriptor.GetAttributes()
|
||||||
|
{
|
||||||
|
return TypeDescriptor.GetAttributes(this, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
string ICustomTypeDescriptor.GetClassName()
|
||||||
|
{
|
||||||
|
return TypeDescriptor.GetClassName(this, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
string ICustomTypeDescriptor.GetComponentName()
|
||||||
|
{
|
||||||
|
return TypeDescriptor.GetComponentName(this, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
TypeConverter ICustomTypeDescriptor.GetConverter()
|
||||||
|
{
|
||||||
|
return TypeDescriptor.GetConverter(this, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
EventDescriptor ICustomTypeDescriptor.GetDefaultEvent()
|
||||||
|
{
|
||||||
|
return TypeDescriptor.GetDefaultEvent(this, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyDescriptor ICustomTypeDescriptor.GetDefaultProperty()
|
||||||
|
{
|
||||||
|
return TypeDescriptor.GetDefaultProperty(this, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
object ICustomTypeDescriptor.GetEditor(Type editorBaseType)
|
||||||
|
{
|
||||||
|
return TypeDescriptor.GetEditor(this, editorBaseType, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
EventDescriptorCollection ICustomTypeDescriptor.GetEvents(Attribute[] attributes)
|
||||||
|
{
|
||||||
|
return TypeDescriptor.GetEvents(this, attributes, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
EventDescriptorCollection ICustomTypeDescriptor.GetEvents()
|
||||||
|
{
|
||||||
|
return TypeDescriptor.GetEvents(this, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties(Attribute[] attributes)
|
||||||
|
{
|
||||||
|
return GetProperties();
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties()
|
||||||
|
{
|
||||||
|
return GetProperties();
|
||||||
|
}
|
||||||
|
|
||||||
|
object ICustomTypeDescriptor.GetPropertyOwner(PropertyDescriptor pd)
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetPropertyQualifierValue(string propertyName, string qualifierName, object qualifierValue)
|
||||||
|
{
|
||||||
|
_wrapperObject.SetPropertyQualifierValue(propertyName, qualifierName, qualifierValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetPropertyValue(string propertyName, object propertyValue)
|
||||||
|
{
|
||||||
|
_wrapperObject.SetPropertyValue(propertyName, propertyValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetQualifierValue(string qualifierName, object qualifierValue)
|
||||||
|
{
|
||||||
|
_wrapperObject.SetQualifierValue(qualifierName, qualifierValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual PropertyDescriptor GetPropertyDescriptor(PropertyData property)
|
||||||
|
{
|
||||||
|
ManagementBaseObjectPropertyDescriptor result = new ManagementBaseObjectPropertyDescriptor(this, property);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
52
WmiExplorer/Classes/ManagementBaseObjectWConverter.cs
Normal file
52
WmiExplorer/Classes/ManagementBaseObjectWConverter.cs
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Management;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Used to display property values of Embedded WMI Objects.
|
||||||
|
/// Reference tutorial: http://www.codeproject.com/Articles/4448/Customized-display-of-collection-data-in-a-Propert
|
||||||
|
/// </summary>
|
||||||
|
internal class ManagementBaseObjectWConverter : ExpandableObjectConverter
|
||||||
|
{
|
||||||
|
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
|
||||||
|
{
|
||||||
|
if (value is ManagementBaseObjectW)
|
||||||
|
{
|
||||||
|
ManagementBaseObjectW mObjectW = (ManagementBaseObjectW)value;
|
||||||
|
|
||||||
|
// If PropertyName contains Name, return the value of the property
|
||||||
|
foreach (PropertyData p in mObjectW.Properties)
|
||||||
|
{
|
||||||
|
if (p.Name.Contains("Name"))
|
||||||
|
return p.Value.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
// No match on Name. If PropertyName contains ID, return the value of the property
|
||||||
|
foreach (PropertyData p in mObjectW.Properties)
|
||||||
|
{
|
||||||
|
if (p.Name.Contains("ID"))
|
||||||
|
return p.Value.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
// No match on Name or ID. If Property is key, return the value of the property
|
||||||
|
foreach (PropertyData p in mObjectW.Properties)
|
||||||
|
{
|
||||||
|
foreach (QualifierData q in p.Qualifiers)
|
||||||
|
if (q.Name.Equals("key", StringComparison.InvariantCultureIgnoreCase))
|
||||||
|
if (String.IsNullOrEmpty(p.Value.ToString()))
|
||||||
|
return String.Empty;
|
||||||
|
else
|
||||||
|
return p.Value.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
// No matches. Return an empty string.
|
||||||
|
return String.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
return base.ConvertTo(context, culture, value, destinationType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
17
WmiExplorer/Classes/ManagementObjectW.cs
Normal file
17
WmiExplorer/Classes/ManagementObjectW.cs
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Management;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Wrapper Class for ManagementObject
|
||||||
|
/// </summary>
|
||||||
|
[TypeConverter(typeof(ManagementBaseObjectWConverter))]
|
||||||
|
internal class ManagementObjectW : ManagementBaseObjectW
|
||||||
|
{
|
||||||
|
public ManagementObjectW(ManagementBaseObject actualObject)
|
||||||
|
: base(actualObject)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
34
WmiExplorer/Classes/MouseWheelMessageFilter.cs
Normal file
34
WmiExplorer/Classes/MouseWheelMessageFilter.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Used to allow scrolling for the controls, without having to select them or focus on them.
|
||||||
|
/// http://www.brad-smith.info/blog/archives/635
|
||||||
|
/// http://stackoverflow.com/questions/7852824/usercontrol-how-to-add-mousewheel-listener
|
||||||
|
/// </summary>
|
||||||
|
internal class MouseWheelMessageFilter : IMessageFilter
|
||||||
|
{
|
||||||
|
private const int WM_MOUSEWHEEL = 0x20a;
|
||||||
|
|
||||||
|
public bool PreFilterMessage(ref Message m)
|
||||||
|
{
|
||||||
|
if (m.Msg == WM_MOUSEWHEEL)
|
||||||
|
{
|
||||||
|
// LParam contains the location of the mouse pointer
|
||||||
|
Point pos = new Point(m.LParam.ToInt32() & 0xffff, m.LParam.ToInt32() >> 16);
|
||||||
|
IntPtr hWnd = NativeMethods.WindowFromPoint(pos);
|
||||||
|
if (hWnd != IntPtr.Zero && hWnd != m.HWnd && Control.FromHandle(hWnd) != null)
|
||||||
|
{
|
||||||
|
// redirect the message to the correct control
|
||||||
|
NativeMethods.SendMessage(hWnd, m.Msg, m.WParam, m.LParam);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
30
WmiExplorer/Classes/NativeMethods.cs
Normal file
30
WmiExplorer/Classes/NativeMethods.cs
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Wrapper for Native Methods
|
||||||
|
/// </summary>
|
||||||
|
internal class NativeMethods
|
||||||
|
{
|
||||||
|
// P/Invoke declarations
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
public static extern bool GetWindowPlacement(IntPtr hWnd, out WINDOWPLACEMENT lpwndpl);
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
|
||||||
|
|
||||||
|
[DllImport("user32.dll", EntryPoint = "SendMessage")]
|
||||||
|
public static extern IntPtr SendMessageLVCOLUMN(IntPtr hWnd, Int32 Msg, IntPtr wParam, ref ListViewExtensions.LVCOLUMN lPLVCOLUMN);
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
public static extern bool SetWindowPlacement(IntPtr hWnd, [In] ref WINDOWPLACEMENT lpwndpl);
|
||||||
|
|
||||||
|
[SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", MessageId = "0"), DllImport("user32.dll")]
|
||||||
|
public static extern IntPtr WindowFromPoint(Point pt);
|
||||||
|
}
|
||||||
|
}
|
||||||
139
WmiExplorer/Classes/ObserverHandler.cs
Normal file
139
WmiExplorer/Classes/ObserverHandler.cs
Normal file
|
|
@ -0,0 +1,139 @@
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Management;
|
||||||
|
using System.Runtime.Caching;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
internal class ObserverHandler
|
||||||
|
{
|
||||||
|
private readonly bool _isClass;
|
||||||
|
private readonly bool _isNamespace;
|
||||||
|
private readonly Stopwatch _stopwatch = new Stopwatch();
|
||||||
|
private readonly WmiClass _wmiClass;
|
||||||
|
private readonly WmiNamespace _wmiNamespace;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Constructor for observer working on retrieving classes for a Namespace
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="wmiNamespace">Instance of WmiNamespace for which to enumerate classes</param>
|
||||||
|
public ObserverHandler(WmiNamespace wmiNamespace)
|
||||||
|
{
|
||||||
|
_wmiNamespace = wmiNamespace;
|
||||||
|
_wmiNamespace.IsEnumerating = true;
|
||||||
|
_isNamespace = true;
|
||||||
|
_stopwatch.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Constructor for observer working on retrieving instances for a Class
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="wmiClass">Instance of WmiClass for which to enumerate instances</param>
|
||||||
|
public ObserverHandler(WmiClass wmiClass)
|
||||||
|
{
|
||||||
|
_wmiClass = wmiClass;
|
||||||
|
_wmiClass.IsEnumerating = true;
|
||||||
|
_isClass = true;
|
||||||
|
_stopwatch.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsComplete { get; private set; }
|
||||||
|
|
||||||
|
public void Done(object sender, CompletedEventArgs e)
|
||||||
|
{
|
||||||
|
_stopwatch.Stop();
|
||||||
|
|
||||||
|
if (_isNamespace)
|
||||||
|
{
|
||||||
|
if (e.Status == ManagementStatus.CallCanceled)
|
||||||
|
{
|
||||||
|
_wmiNamespace.IsPartiallyEnumerated = true;
|
||||||
|
_wmiNamespace.IsEnumerationCancelled = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_wmiNamespace.IsPartiallyEnumerated = false;
|
||||||
|
_wmiNamespace.IsEnumerationCancelled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
_wmiNamespace.IsEnumerated = true;
|
||||||
|
_wmiNamespace.IsEnumerating = false;
|
||||||
|
_wmiNamespace.EnumerationStatus = e.Status.ToString();
|
||||||
|
_wmiNamespace.EnumTime = DateTime.Now;
|
||||||
|
_wmiNamespace.EnumTimeElapsed = _stopwatch.Elapsed;
|
||||||
|
|
||||||
|
CacheItem ci = new CacheItem(_wmiNamespace.Path, _wmiNamespace.Classes);
|
||||||
|
WmiExplorer.AppCache.Set(ci, WmiExplorer.CachePolicy);
|
||||||
|
_wmiNamespace.ResetClasses();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_isClass)
|
||||||
|
{
|
||||||
|
if (e.Status == ManagementStatus.CallCanceled)
|
||||||
|
{
|
||||||
|
_wmiClass.IsPartiallyEnumerated = true;
|
||||||
|
_wmiClass.IsEnumerationCancelled = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_wmiClass.IsPartiallyEnumerated = false;
|
||||||
|
_wmiClass.IsEnumerationCancelled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
_wmiClass.IsEnumerated = true;
|
||||||
|
_wmiClass.IsEnumerating = false;
|
||||||
|
_wmiClass.IsEnumerationCancelled = false;
|
||||||
|
_wmiClass.EnumerationStatus = e.Status.ToString();
|
||||||
|
_wmiClass.EnumTime = DateTime.Now;
|
||||||
|
_wmiClass.EnumTimeElapsed = _stopwatch.Elapsed;
|
||||||
|
|
||||||
|
CacheItem ci = new CacheItem(_wmiClass.Path, _wmiClass.Instances);
|
||||||
|
WmiExplorer.AppCache.Set(ci, WmiExplorer.CachePolicy);
|
||||||
|
_wmiClass.ResetInstances();
|
||||||
|
}
|
||||||
|
|
||||||
|
IsComplete = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void NewObject(object sender, ObjectReadyEventArgs e)
|
||||||
|
{
|
||||||
|
ManagementObject mObject = (ManagementObject)e.NewObject;
|
||||||
|
|
||||||
|
if (mObject.Path.IsClass && _isNamespace)
|
||||||
|
{
|
||||||
|
WmiClass wmiClass = new WmiClass(mObject as ManagementClass);
|
||||||
|
|
||||||
|
ListViewItem li = new ListViewItem
|
||||||
|
{
|
||||||
|
Name = wmiClass.Path,
|
||||||
|
Text = wmiClass.DisplayName,
|
||||||
|
ToolTipText = wmiClass.Description,
|
||||||
|
Tag = wmiClass
|
||||||
|
};
|
||||||
|
|
||||||
|
// Add Lazy Properties, Description, and Path columns
|
||||||
|
li.SubItems.Add(wmiClass.HasLazyProperties.ToString());
|
||||||
|
li.SubItems.Add(wmiClass.Description);
|
||||||
|
li.SubItems.Add(wmiClass.Path);
|
||||||
|
|
||||||
|
_wmiNamespace.AddClass(li);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mObject.Path.IsInstance && _isClass)
|
||||||
|
{
|
||||||
|
WmiInstance wmiInstance = new WmiInstance(mObject);
|
||||||
|
|
||||||
|
ListViewItem li = new ListViewItem
|
||||||
|
{
|
||||||
|
Name = wmiInstance.Path,
|
||||||
|
Text = wmiInstance.RelativePath,
|
||||||
|
ToolTipText = wmiInstance.RelativePath,
|
||||||
|
Tag = wmiInstance
|
||||||
|
};
|
||||||
|
|
||||||
|
_wmiClass.AddInstance(li);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
33
WmiExplorer/Classes/ToolStripItemCollectionSorter.cs
Normal file
33
WmiExplorer/Classes/ToolStripItemCollectionSorter.cs
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
public static class ToolStripItemExtensions
|
||||||
|
{
|
||||||
|
public static void SortToolStripItemCollection(this ToolStripItemCollection items)
|
||||||
|
{
|
||||||
|
ArrayList aList = new ArrayList(items);
|
||||||
|
aList.Sort(new ToolStripItemCollectionSorter());
|
||||||
|
items.Clear();
|
||||||
|
|
||||||
|
foreach (ToolStripItem item in aList)
|
||||||
|
{
|
||||||
|
items.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ToolStripItemCollectionSorter : IComparer
|
||||||
|
{
|
||||||
|
public int Compare(object x, object y)
|
||||||
|
{
|
||||||
|
// Cast the objects to be compared to ListViewItem objects
|
||||||
|
ToolStripItem toolStripItemX = (ToolStripItem)x;
|
||||||
|
ToolStripItem toolStripItemY = (ToolStripItem)y;
|
||||||
|
|
||||||
|
return String.Compare(toolStripItemX.Text, toolStripItemY.Text, StringComparison.OrdinalIgnoreCase);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
216
WmiExplorer/Classes/Utilities.cs
Normal file
216
WmiExplorer/Classes/Utilities.cs
Normal file
|
|
@ -0,0 +1,216 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Specialized;
|
||||||
|
using System.Configuration;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Security;
|
||||||
|
using System.Security.Principal;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using WmiExplorer.Properties;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
public static class Utilities
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Checks if Application is running as Administrator
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>True if running as Administrator.</returns>
|
||||||
|
public static bool CheckIfElevated()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
WindowsIdentity userIdentity = WindowsIdentity.GetCurrent();
|
||||||
|
WindowsPrincipal userPrincipal = new WindowsPrincipal(userIdentity);
|
||||||
|
|
||||||
|
if (userPrincipal.IsInRole(WindowsBuiltInRole.Administrator))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Failed to determine if Application is running as Administrator: " + ex.Message);
|
||||||
|
//Log("Unable to determine whether Application is running Elevated. Error: " + ex.Message);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// To search and highlight text in Rich Text Box
|
||||||
|
/// http://www.dotnetcurry.com/showarticle.aspx?ID=146
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="txtToSearch">Text to Search in RichTextBox rtb</param>
|
||||||
|
/// <param name="searchStart">Start index for search</param>
|
||||||
|
/// <param name="indexOfSearchText">Index of Last Search result</param>
|
||||||
|
/// <param name="rtb">RichTextBox to search in</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static int FindTextInRichTextBox(string txtToSearch, int searchStart, int indexOfSearchText, RichTextBox rtb)
|
||||||
|
{
|
||||||
|
// Set the return value to -1 by default.
|
||||||
|
int retVal = -1;
|
||||||
|
int searchEnd = rtb.Text.Length;
|
||||||
|
|
||||||
|
// A valid starting index should be specified.
|
||||||
|
// if _indexOfSearchText = -1, the end of search
|
||||||
|
if (searchStart >= 0 && indexOfSearchText >= 0)
|
||||||
|
{
|
||||||
|
// A valid ending index
|
||||||
|
if (searchEnd > searchStart || searchEnd == -1)
|
||||||
|
{
|
||||||
|
// Find the position of search string in RichTextBox
|
||||||
|
indexOfSearchText = rtb.Find(txtToSearch, searchStart, searchEnd, RichTextBoxFinds.None);
|
||||||
|
|
||||||
|
// Determine whether the text was found in rtb.
|
||||||
|
if (indexOfSearchText != -1)
|
||||||
|
{
|
||||||
|
// Return the index to the specified search text.
|
||||||
|
retVal = indexOfSearchText;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns all Application settings
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>String value containing name & value of all settings</returns>
|
||||||
|
public static string GetSettings()
|
||||||
|
{
|
||||||
|
string settings = String.Empty;
|
||||||
|
|
||||||
|
foreach (SettingsProperty p in from SettingsProperty p in Settings.Default.Properties
|
||||||
|
orderby p.Name
|
||||||
|
select p)
|
||||||
|
{
|
||||||
|
// Exclude UpdateCheckUrl and WindowPlacement settings
|
||||||
|
if (p.Name.StartsWith("UpdateCheckUrl", StringComparison.InvariantCultureIgnoreCase) || p.Name.Equals("WindowPlacement", StringComparison.InvariantCultureIgnoreCase))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Settings containing a string array
|
||||||
|
if (Settings.Default[p.Name] is StringCollection)
|
||||||
|
{
|
||||||
|
settings += p.Name + " = ";
|
||||||
|
foreach (var s in Settings.Default[p.Name] as StringCollection)
|
||||||
|
settings += s + ", ";
|
||||||
|
settings += "\r\n";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Settings without default values
|
||||||
|
if (p.DefaultValue == null)
|
||||||
|
{
|
||||||
|
settings += p.Name + " = " + Settings.Default[p.Name] + "\r\n";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Other settings with indicator whether value is the default value
|
||||||
|
if (p.DefaultValue.ToString() == Settings.Default[p.Name].ToString())
|
||||||
|
settings += p.Name + " = " + Settings.Default[p.Name] + " (Default)\r\n";
|
||||||
|
else
|
||||||
|
settings += p.Name + " = " + Settings.Default[p.Name] + "\r\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
return settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Launch the specified program
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sCmd">Command to run</param>
|
||||||
|
public static void LaunchProgram(string sCmd)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Process.Start(sCmd);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show(ex.Message, "Error launching program", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Launch the specified program with arguments
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sCmd">Command to run</param>
|
||||||
|
/// <param name="sArgument">Argument for the command</param>
|
||||||
|
/// <param name="bWaitForExit">Wait for the command to Exit</param>
|
||||||
|
public static void LaunchProgram(string sCmd, string sArgument, bool bWaitForExit)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (bWaitForExit)
|
||||||
|
Process.Start(sCmd, sArgument).WaitForExit();
|
||||||
|
else
|
||||||
|
Process.Start(sCmd, sArgument);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show(ex.Message, "Error launching program", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns a string from the source SecureString
|
||||||
|
/// http://blogs.msdn.com/b/fpintos/archive/2009/06/12/how-to-properly-convert-securestring-to-string.aspx
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="secureString">SecureString to convert to String</param>
|
||||||
|
/// <returns>String</returns>
|
||||||
|
public static string SecureStringToString(this SecureString secureString)
|
||||||
|
{
|
||||||
|
if (secureString == null)
|
||||||
|
throw new ArgumentNullException("secureString");
|
||||||
|
|
||||||
|
IntPtr unmanagedString = IntPtr.Zero;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
unmanagedString = Marshal.SecureStringToGlobalAllocUnicode(secureString);
|
||||||
|
return Marshal.PtrToStringUni(unmanagedString);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
Marshal.ZeroFreeGlobalAllocUnicode(unmanagedString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns a Secure string from the source string
|
||||||
|
/// http://msdn.microsoft.com/en-us/library/system.security.securestring(v=vs.110).aspx
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="source">String to convert to SecureString</param>
|
||||||
|
/// <returns>SecureString</returns>
|
||||||
|
public static SecureString StringToSecureString(this string source)
|
||||||
|
{
|
||||||
|
if (String.IsNullOrWhiteSpace(source))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
SecureString result = new SecureString();
|
||||||
|
foreach (char c in source.ToCharArray())
|
||||||
|
result.AppendChar(c);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Update User Settings on Application version update
|
||||||
|
/// http://www.ngpixel.com/2011/05/05/c-keep-user-settings-between-versions/
|
||||||
|
/// </summary>
|
||||||
|
public static void UpdateSettings()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Settings.Default.Upgrade();
|
||||||
|
Settings.Default.bUpgradeSettings = false;
|
||||||
|
Settings.Default.bUpdateAvailable = false;
|
||||||
|
Settings.Default.Save();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Failed to upgrade user settings. Error: " + ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
111
WmiExplorer/Classes/WindowPlacement.cs
Normal file
111
WmiExplorer/Classes/WindowPlacement.cs
Normal file
|
|
@ -0,0 +1,111 @@
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Text;
|
||||||
|
using System.Xml;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
// Reference Link: David Rickard's Blog
|
||||||
|
// http://blogs.msdn.com/b/davidrickard/archive/2010/03/09/saving-window-size-and-location-in-wpf-and-winforms.aspx
|
||||||
|
|
||||||
|
// POINT structure required by WINDOWPLACEMENT structure
|
||||||
|
[Serializable]
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct POINT
|
||||||
|
{
|
||||||
|
public int X;
|
||||||
|
public int Y;
|
||||||
|
|
||||||
|
public POINT(int x, int y)
|
||||||
|
{
|
||||||
|
X = x;
|
||||||
|
Y = y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// RECT structure required by WINDOWPLACEMENT structure
|
||||||
|
[Serializable]
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct RECT
|
||||||
|
{
|
||||||
|
public int Left;
|
||||||
|
public int Top;
|
||||||
|
public int Right;
|
||||||
|
public int Bottom;
|
||||||
|
|
||||||
|
public RECT(int left, int top, int right, int bottom)
|
||||||
|
{
|
||||||
|
Left = left;
|
||||||
|
Top = top;
|
||||||
|
Right = right;
|
||||||
|
Bottom = bottom;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WINDOWPLACEMENT stores the position, size, and state of a window
|
||||||
|
[Serializable]
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct WINDOWPLACEMENT
|
||||||
|
{
|
||||||
|
public int length;
|
||||||
|
public int flags;
|
||||||
|
public int showCmd;
|
||||||
|
public POINT minPosition;
|
||||||
|
public POINT maxPosition;
|
||||||
|
public RECT normalPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class WindowPlacement
|
||||||
|
{
|
||||||
|
private const int SW_SHOWMINIMIZED = 2;
|
||||||
|
private const int SW_SHOWNORMAL = 1;
|
||||||
|
private static readonly Encoding Encoding = new ASCIIEncoding();
|
||||||
|
private static readonly XmlSerializer Serializer = new XmlSerializer(typeof(WINDOWPLACEMENT));
|
||||||
|
|
||||||
|
public static string GetPlacement(IntPtr windowHandle)
|
||||||
|
{
|
||||||
|
WINDOWPLACEMENT placement;
|
||||||
|
NativeMethods.GetWindowPlacement(windowHandle, out placement);
|
||||||
|
|
||||||
|
using (MemoryStream memoryStream = new MemoryStream())
|
||||||
|
{
|
||||||
|
using (XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.ASCII))
|
||||||
|
{
|
||||||
|
Serializer.Serialize(xmlTextWriter, placement);
|
||||||
|
byte[] xmlBytes = memoryStream.ToArray();
|
||||||
|
return Encoding.GetString(xmlBytes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SetPlacement(IntPtr windowHandle, string placementXml)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(placementXml))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
byte[] xmlBytes = Encoding.GetBytes(placementXml);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
WINDOWPLACEMENT placement;
|
||||||
|
using (MemoryStream memoryStream = new MemoryStream(xmlBytes))
|
||||||
|
{
|
||||||
|
placement = (WINDOWPLACEMENT)Serializer.Deserialize(memoryStream);
|
||||||
|
}
|
||||||
|
|
||||||
|
placement.length = Marshal.SizeOf(typeof(WINDOWPLACEMENT));
|
||||||
|
placement.flags = 0;
|
||||||
|
placement.showCmd = (placement.showCmd == SW_SHOWMINIMIZED ? SW_SHOWNORMAL : placement.showCmd);
|
||||||
|
NativeMethods.SetWindowPlacement(windowHandle, ref placement);
|
||||||
|
}
|
||||||
|
catch (InvalidOperationException)
|
||||||
|
{
|
||||||
|
// Parsing placement XML failed. Fail silently.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
185
WmiExplorer/Classes/WmiClass.cs
Normal file
185
WmiExplorer/Classes/WmiClass.cs
Normal file
|
|
@ -0,0 +1,185 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Management;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
internal class WmiClass
|
||||||
|
{
|
||||||
|
public List<ListViewItem> Instances = new List<ListViewItem>();
|
||||||
|
private string _description;
|
||||||
|
private string _displayName;
|
||||||
|
private string _enumerationStatus;
|
||||||
|
private DateTime _enumTime;
|
||||||
|
private TimeSpan _enumTimeElapsed;
|
||||||
|
private bool _hasLazyProperties;
|
||||||
|
private string _instanceFilterQuick;
|
||||||
|
private string _namespacePath;
|
||||||
|
private string _path;
|
||||||
|
private string _relativePath;
|
||||||
|
|
||||||
|
public WmiClass(ManagementClass actualClass)
|
||||||
|
{
|
||||||
|
Class = actualClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ManagementClass Class { get; set; }
|
||||||
|
|
||||||
|
public string Description
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
foreach (QualifierData q in from QualifierData q in Class.Qualifiers where q.Name.Equals("Description", StringComparison.CurrentCultureIgnoreCase) select q)
|
||||||
|
{
|
||||||
|
_description = Class.GetQualifierValue("Description").ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (ManagementException ex)
|
||||||
|
{
|
||||||
|
if ((ex.ErrorCode).ToString() == "NotFound")
|
||||||
|
_description = String.Empty;
|
||||||
|
else
|
||||||
|
_description = "Error getting Class Description";
|
||||||
|
}
|
||||||
|
|
||||||
|
return _description;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string DisplayName
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_displayName == null)
|
||||||
|
_displayName = Class.ClassPath.ClassName;
|
||||||
|
|
||||||
|
return _displayName;
|
||||||
|
}
|
||||||
|
set { _displayName = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string EnumerationStatus
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (String.IsNullOrEmpty(_enumerationStatus))
|
||||||
|
_enumerationStatus = "NoError";
|
||||||
|
|
||||||
|
return _enumerationStatus;
|
||||||
|
}
|
||||||
|
set { _enumerationStatus = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime EnumTime
|
||||||
|
{
|
||||||
|
get { return _enumTime; }
|
||||||
|
set { _enumTime = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public TimeSpan EnumTimeElapsed
|
||||||
|
{
|
||||||
|
get { return _enumTimeElapsed; }
|
||||||
|
set { _enumTimeElapsed = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool HasLazyProperties
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
foreach (PropertyData pd in Class.Properties)
|
||||||
|
{
|
||||||
|
foreach (QualifierData qd in pd.Qualifiers)
|
||||||
|
{
|
||||||
|
if (qd.Name.Equals("lazy", StringComparison.CurrentCultureIgnoreCase))
|
||||||
|
{
|
||||||
|
_hasLazyProperties = true;
|
||||||
|
return _hasLazyProperties;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return _hasLazyProperties;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int InstanceCount { get; set; }
|
||||||
|
|
||||||
|
public string InstanceFilterQuick
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_instanceFilterQuick == null)
|
||||||
|
_instanceFilterQuick = String.Empty;
|
||||||
|
|
||||||
|
return _instanceFilterQuick;
|
||||||
|
}
|
||||||
|
set { _instanceFilterQuick = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Indicates if class has instances enumerated
|
||||||
|
public bool IsEnumerated { get; set; }
|
||||||
|
|
||||||
|
// Indicates if class is currently being enumerated
|
||||||
|
public bool IsEnumerating { get; set; }
|
||||||
|
|
||||||
|
// Indicates if cancellation is requested for this class.
|
||||||
|
public bool IsEnumerationCancelled { get; set; }
|
||||||
|
|
||||||
|
// Indicates if class has instances partially enumerated. This can occur if user cancels operation.
|
||||||
|
public bool IsPartiallyEnumerated { get; set; }
|
||||||
|
|
||||||
|
public string NamespacePath
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_namespacePath == null)
|
||||||
|
_namespacePath = Class.Scope.Path.Path;
|
||||||
|
|
||||||
|
return _namespacePath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Path
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_path == null)
|
||||||
|
_path = Class.Path.Path;
|
||||||
|
return _path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string RelativePath
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_relativePath == null)
|
||||||
|
_relativePath = Class.Path.RelativePath;
|
||||||
|
|
||||||
|
return _relativePath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddInstance(ListViewItem listItemInstance)
|
||||||
|
{
|
||||||
|
Instances.Add(listItemInstance);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetClassMof(bool bAmended = false)
|
||||||
|
{
|
||||||
|
Class.Options.UseAmendedQualifiers = bAmended;
|
||||||
|
Class.Get();
|
||||||
|
return Class.GetText(TextFormat.Mof).Replace("\n", "\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ResetInstances()
|
||||||
|
{
|
||||||
|
InstanceCount = Instances.Count;
|
||||||
|
Instances = new List<ListViewItem>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
50
WmiExplorer/Classes/WmiInstance.cs
Normal file
50
WmiExplorer/Classes/WmiInstance.cs
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
using System.Management;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
internal class WmiInstance
|
||||||
|
{
|
||||||
|
private string _path;
|
||||||
|
private string _relativePath;
|
||||||
|
|
||||||
|
public WmiInstance(ManagementObject actualObject)
|
||||||
|
{
|
||||||
|
Instance = actualObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ManagementObject Instance { get; set; }
|
||||||
|
|
||||||
|
public string Path
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_path == null)
|
||||||
|
_path = Instance.Path.Path;
|
||||||
|
|
||||||
|
return _path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string RelativePath
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_relativePath == null)
|
||||||
|
_relativePath = Instance.Path.RelativePath;
|
||||||
|
|
||||||
|
return _relativePath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetInstanceMof(bool bAmended = false)
|
||||||
|
{
|
||||||
|
if (bAmended)
|
||||||
|
Instance.Options.UseAmendedQualifiers = true;
|
||||||
|
else
|
||||||
|
Instance.Options.UseAmendedQualifiers = false;
|
||||||
|
|
||||||
|
Instance.Get();
|
||||||
|
return Instance.GetText(TextFormat.Mof).Replace("\n", "\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
42
WmiExplorer/Classes/WmiMethod.cs
Normal file
42
WmiExplorer/Classes/WmiMethod.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
using System.Management;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
internal class WmiMethod
|
||||||
|
{
|
||||||
|
private string _description;
|
||||||
|
private bool _isStatic;
|
||||||
|
private string _methodName;
|
||||||
|
private string _path;
|
||||||
|
private MethodData _wmiMethod;
|
||||||
|
|
||||||
|
public WmiMethod(MethodData actualMethod)
|
||||||
|
{
|
||||||
|
_wmiMethod = actualMethod;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Description
|
||||||
|
{
|
||||||
|
get { return _description; }
|
||||||
|
set { _description = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsStatic
|
||||||
|
{
|
||||||
|
get { return _isStatic; }
|
||||||
|
set { _isStatic = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string MethodName
|
||||||
|
{
|
||||||
|
get { return _methodName; }
|
||||||
|
set { _methodName = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Path
|
||||||
|
{
|
||||||
|
get { return _path; }
|
||||||
|
set { _path = value; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
179
WmiExplorer/Classes/WmiNamespace.cs
Normal file
179
WmiExplorer/Classes/WmiNamespace.cs
Normal file
|
|
@ -0,0 +1,179 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Management;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
internal class WmiNamespace
|
||||||
|
{
|
||||||
|
public int ClassCount = 0;
|
||||||
|
public List<ListViewItem> Classes = new List<ListViewItem>();
|
||||||
|
private readonly ManagementObject _wmiNamespace;
|
||||||
|
private string _classFilter; // Class Filter for current namespace
|
||||||
|
private string _classFilterQuick; // Quick Filter for current namespace
|
||||||
|
private string _displayName; // Display Name of the current namespace
|
||||||
|
private string _enumerationStatus; // Class Enumeration status of current namespace
|
||||||
|
private DateTime _enumTime; // Enumeration Time of current namespace
|
||||||
|
private TimeSpan _enumTimeElapsed; // Time taken to enumerate classes for current namespace
|
||||||
|
private bool _isRootNode; // Indicates if current namespace is the root node
|
||||||
|
private string _path; // Path of the current namespace
|
||||||
|
private string _relativePath; // Relative Path of current namespace
|
||||||
|
private string _serverName; // Server name
|
||||||
|
|
||||||
|
public WmiNamespace(ManagementObject actualNamespace)
|
||||||
|
{
|
||||||
|
_wmiNamespace = actualNamespace;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ClassFilter
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_classFilter == null)
|
||||||
|
_classFilter = "%";
|
||||||
|
|
||||||
|
return _classFilter;
|
||||||
|
}
|
||||||
|
set { _classFilter = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ClassFilterQuick
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_classFilterQuick == null)
|
||||||
|
_classFilterQuick = String.Empty;
|
||||||
|
|
||||||
|
return _classFilterQuick;
|
||||||
|
}
|
||||||
|
set { _classFilterQuick = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string DisplayName
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_displayName == null)
|
||||||
|
{
|
||||||
|
if (IsRootNode)
|
||||||
|
_displayName = _wmiNamespace.Scope.Path.Path.ToUpper();
|
||||||
|
else
|
||||||
|
_displayName = RelativePath;
|
||||||
|
}
|
||||||
|
return _displayName;
|
||||||
|
}
|
||||||
|
set { _displayName = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string EnumerationStatus
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (String.IsNullOrEmpty(_enumerationStatus))
|
||||||
|
_enumerationStatus = "NoError";
|
||||||
|
|
||||||
|
return _enumerationStatus;
|
||||||
|
}
|
||||||
|
set { _enumerationStatus = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime EnumTime
|
||||||
|
{
|
||||||
|
get { return _enumTime; }
|
||||||
|
set { _enumTime = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public TimeSpan EnumTimeElapsed
|
||||||
|
{
|
||||||
|
get { return _enumTimeElapsed; }
|
||||||
|
set { _enumTimeElapsed = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Indicates if current namespace has classes enumerated
|
||||||
|
public bool IsEnumerated { get; set; }
|
||||||
|
|
||||||
|
// Indicates if current namespace is currently being enumerated
|
||||||
|
public bool IsEnumerating { get; set; }
|
||||||
|
|
||||||
|
// Indicates if cancellation is requested for this namespace.
|
||||||
|
public bool IsEnumerationCancelled { get; set; }
|
||||||
|
|
||||||
|
// Indicates if current namespace has classes partially enumerated. This can occur if user cancels operation.
|
||||||
|
public bool IsPartiallyEnumerated { get; set; }
|
||||||
|
|
||||||
|
public bool IsRootNode
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// Namespace in root node has Path.Path set to Empty string
|
||||||
|
if (String.IsNullOrEmpty(_wmiNamespace.Path.Path))
|
||||||
|
_isRootNode = true;
|
||||||
|
else
|
||||||
|
_isRootNode = false;
|
||||||
|
|
||||||
|
return _isRootNode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Path
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_path == null)
|
||||||
|
{
|
||||||
|
if (IsRootNode)
|
||||||
|
_path = _wmiNamespace.Scope.Path.Path.ToUpper();
|
||||||
|
else
|
||||||
|
_path = "\\\\" + _wmiNamespace.Path.Server + "\\" + _wmiNamespace.GetPropertyValue("__Namespace") + "\\" + _wmiNamespace.GetPropertyValue("Name");
|
||||||
|
}
|
||||||
|
return _path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string RelativePath
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_relativePath == null)
|
||||||
|
{
|
||||||
|
if (IsRootNode)
|
||||||
|
_relativePath = _wmiNamespace.Scope.Path.NamespacePath.ToUpper();
|
||||||
|
else
|
||||||
|
_relativePath = _wmiNamespace.GetPropertyValue("__NAMESPACE") + "\\" + _wmiNamespace.GetPropertyValue("Name");
|
||||||
|
}
|
||||||
|
return _relativePath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ServerName
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_serverName == null)
|
||||||
|
_serverName = _wmiNamespace.Scope.Path.Server;
|
||||||
|
|
||||||
|
return _serverName;
|
||||||
|
}
|
||||||
|
set { _serverName = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds new list item to _classes. Called by ObserverHandler when NewObject arrives.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="listItemClass"></param>
|
||||||
|
public void AddClass(ListViewItem listItemClass)
|
||||||
|
{
|
||||||
|
Classes.Add(listItemClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Resets contents of _classes
|
||||||
|
/// </summary>
|
||||||
|
public void ResetClasses()
|
||||||
|
{
|
||||||
|
ClassCount = Classes.Count;
|
||||||
|
Classes = new List<ListViewItem>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
68
WmiExplorer/Classes/WmiNode.cs
Normal file
68
WmiExplorer/Classes/WmiNode.cs
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
using System;
|
||||||
|
using System.Management;
|
||||||
|
using WmiExplorer.Sms;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Classes
|
||||||
|
{
|
||||||
|
internal class WmiNode
|
||||||
|
{
|
||||||
|
private ConnectionOptions _connection;
|
||||||
|
|
||||||
|
private string _expansionStatus;
|
||||||
|
|
||||||
|
private string _userSpecifiedPath;
|
||||||
|
|
||||||
|
// Constructor to create Root Node
|
||||||
|
public WmiNode()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// Constructor to create Wmi Node for the specified namespace
|
||||||
|
public WmiNode(ManagementObject wmiNamespace)
|
||||||
|
{
|
||||||
|
WmiNamespace = new WmiNamespace(wmiNamespace);
|
||||||
|
//_connection = wmiNamespace.Scope.Options;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConnectionOptions Connection
|
||||||
|
{
|
||||||
|
get { return _connection; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ExpansionStatus
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (String.IsNullOrEmpty(_expansionStatus))
|
||||||
|
_expansionStatus = "NoError";
|
||||||
|
|
||||||
|
return _expansionStatus;
|
||||||
|
}
|
||||||
|
set { _expansionStatus = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsConnected { get; set; }
|
||||||
|
|
||||||
|
public bool IsExpanded { get; set; }
|
||||||
|
|
||||||
|
public bool IsRootNode { get; set; }
|
||||||
|
|
||||||
|
public SmsClient SmsClient { get; set; }
|
||||||
|
|
||||||
|
public string UserSpecifiedPath
|
||||||
|
{
|
||||||
|
get { return _userSpecifiedPath; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_userSpecifiedPath = IsRootNode ? value : "NotApplicable";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public WmiNamespace WmiNamespace { get; set; }
|
||||||
|
|
||||||
|
public void SetConnection(ConnectionOptions value)
|
||||||
|
{
|
||||||
|
_connection = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
173
WmiExplorer/Forms/Form_About.Designer.cs
generated
Normal file
173
WmiExplorer/Forms/Form_About.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,173 @@
|
||||||
|
namespace WmiExplorer.Forms
|
||||||
|
{
|
||||||
|
partial class Form_About
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form_About));
|
||||||
|
this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.logoPictureBox = new System.Windows.Forms.PictureBox();
|
||||||
|
this.labelProductName = new System.Windows.Forms.Label();
|
||||||
|
this.labelVersion = new System.Windows.Forms.Label();
|
||||||
|
this.labelCopyright = new System.Windows.Forms.Label();
|
||||||
|
this.okButton = new System.Windows.Forms.Button();
|
||||||
|
this.textBoxDescription = new System.Windows.Forms.TextBox();
|
||||||
|
this.tableLayoutPanel.SuspendLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// tableLayoutPanel
|
||||||
|
//
|
||||||
|
this.tableLayoutPanel.ColumnCount = 2;
|
||||||
|
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33F));
|
||||||
|
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67F));
|
||||||
|
this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0);
|
||||||
|
this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0);
|
||||||
|
this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1);
|
||||||
|
this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2);
|
||||||
|
this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5);
|
||||||
|
this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4);
|
||||||
|
this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.tableLayoutPanel.Location = new System.Drawing.Point(9, 9);
|
||||||
|
this.tableLayoutPanel.Name = "tableLayoutPanel";
|
||||||
|
this.tableLayoutPanel.RowCount = 6;
|
||||||
|
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||||
|
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||||
|
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||||
|
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4F));
|
||||||
|
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 56F));
|
||||||
|
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||||
|
this.tableLayoutPanel.Size = new System.Drawing.Size(416, 263);
|
||||||
|
this.tableLayoutPanel.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// logoPictureBox
|
||||||
|
//
|
||||||
|
this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.logoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("logoPictureBox.Image")));
|
||||||
|
this.logoPictureBox.Location = new System.Drawing.Point(3, 3);
|
||||||
|
this.logoPictureBox.Name = "logoPictureBox";
|
||||||
|
this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6);
|
||||||
|
this.logoPictureBox.Size = new System.Drawing.Size(131, 257);
|
||||||
|
this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||||
|
this.logoPictureBox.TabIndex = 12;
|
||||||
|
this.logoPictureBox.TabStop = false;
|
||||||
|
//
|
||||||
|
// labelProductName
|
||||||
|
//
|
||||||
|
this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.labelProductName.Location = new System.Drawing.Point(143, 0);
|
||||||
|
this.labelProductName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
||||||
|
this.labelProductName.MaximumSize = new System.Drawing.Size(0, 17);
|
||||||
|
this.labelProductName.Name = "labelProductName";
|
||||||
|
this.labelProductName.Size = new System.Drawing.Size(270, 17);
|
||||||
|
this.labelProductName.TabIndex = 19;
|
||||||
|
this.labelProductName.Text = "Product Name";
|
||||||
|
this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
//
|
||||||
|
// labelVersion
|
||||||
|
//
|
||||||
|
this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.labelVersion.Location = new System.Drawing.Point(143, 26);
|
||||||
|
this.labelVersion.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
||||||
|
this.labelVersion.MaximumSize = new System.Drawing.Size(0, 17);
|
||||||
|
this.labelVersion.Name = "labelVersion";
|
||||||
|
this.labelVersion.Size = new System.Drawing.Size(270, 17);
|
||||||
|
this.labelVersion.TabIndex = 0;
|
||||||
|
this.labelVersion.Text = "Version";
|
||||||
|
this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
//
|
||||||
|
// labelCopyright
|
||||||
|
//
|
||||||
|
this.labelCopyright.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.labelCopyright.Location = new System.Drawing.Point(143, 52);
|
||||||
|
this.labelCopyright.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
||||||
|
this.labelCopyright.MaximumSize = new System.Drawing.Size(0, 17);
|
||||||
|
this.labelCopyright.Name = "labelCopyright";
|
||||||
|
this.labelCopyright.Size = new System.Drawing.Size(270, 17);
|
||||||
|
this.labelCopyright.TabIndex = 21;
|
||||||
|
this.labelCopyright.Text = "Copyright";
|
||||||
|
this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
//
|
||||||
|
// okButton
|
||||||
|
//
|
||||||
|
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
this.okButton.Location = new System.Drawing.Point(338, 238);
|
||||||
|
this.okButton.Name = "okButton";
|
||||||
|
this.okButton.Size = new System.Drawing.Size(75, 22);
|
||||||
|
this.okButton.TabIndex = 24;
|
||||||
|
this.okButton.Text = "&OK";
|
||||||
|
//
|
||||||
|
// textBoxDescription
|
||||||
|
//
|
||||||
|
this.textBoxDescription.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
|
this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.textBoxDescription.Location = new System.Drawing.Point(143, 91);
|
||||||
|
this.textBoxDescription.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
|
||||||
|
this.textBoxDescription.Multiline = true;
|
||||||
|
this.textBoxDescription.Name = "textBoxDescription";
|
||||||
|
this.textBoxDescription.ReadOnly = true;
|
||||||
|
this.textBoxDescription.Size = new System.Drawing.Size(270, 141);
|
||||||
|
this.textBoxDescription.TabIndex = 23;
|
||||||
|
this.textBoxDescription.TabStop = false;
|
||||||
|
this.textBoxDescription.Text = resources.GetString("textBoxDescription.Text");
|
||||||
|
//
|
||||||
|
// Form_About
|
||||||
|
//
|
||||||
|
this.AcceptButton = this.okButton;
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||||
|
this.AutoSize = true;
|
||||||
|
this.CancelButton = this.okButton;
|
||||||
|
this.ClientSize = new System.Drawing.Size(434, 281);
|
||||||
|
this.Controls.Add(this.tableLayoutPanel);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||||
|
this.MaximizeBox = false;
|
||||||
|
this.MinimizeBox = false;
|
||||||
|
this.Name = "Form_About";
|
||||||
|
this.Padding = new System.Windows.Forms.Padding(9);
|
||||||
|
this.ShowIcon = false;
|
||||||
|
this.ShowInTaskbar = false;
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
|
this.Text = "Form_About";
|
||||||
|
this.tableLayoutPanel.ResumeLayout(false);
|
||||||
|
this.tableLayoutPanel.PerformLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
|
||||||
|
private System.Windows.Forms.PictureBox logoPictureBox;
|
||||||
|
private System.Windows.Forms.Label labelProductName;
|
||||||
|
private System.Windows.Forms.Label labelVersion;
|
||||||
|
private System.Windows.Forms.Label labelCopyright;
|
||||||
|
private System.Windows.Forms.TextBox textBoxDescription;
|
||||||
|
private System.Windows.Forms.Button okButton;
|
||||||
|
}
|
||||||
|
}
|
||||||
100
WmiExplorer/Forms/Form_About.cs
Normal file
100
WmiExplorer/Forms/Form_About.cs
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Forms
|
||||||
|
{
|
||||||
|
partial class Form_About : Form
|
||||||
|
{
|
||||||
|
public Form_About()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
this.Text = String.Format("About {0}", AssemblyTitle);
|
||||||
|
this.labelProductName.Text = AssemblyProduct;
|
||||||
|
this.labelVersion.Text = String.Format("Version {0}", AssemblyVersion);
|
||||||
|
this.labelCopyright.Text = AssemblyCopyright;
|
||||||
|
//this.labelCompanyName.Text = AssemblyCompany;
|
||||||
|
//this.textBoxDescription.Text = AssemblyDescription;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Assembly Attribute Accessors
|
||||||
|
|
||||||
|
public string AssemblyTitle
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
|
||||||
|
if (attributes.Length > 0)
|
||||||
|
{
|
||||||
|
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
|
||||||
|
if (titleAttribute.Title != "")
|
||||||
|
{
|
||||||
|
return titleAttribute.Title;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string AssemblyVersion
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string AssemblyDescription
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
|
||||||
|
if (attributes.Length == 0)
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return ((AssemblyDescriptionAttribute)attributes[0]).Description;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string AssemblyProduct
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
|
||||||
|
if (attributes.Length == 0)
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return ((AssemblyProductAttribute)attributes[0]).Product;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string AssemblyCopyright
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
|
||||||
|
if (attributes.Length == 0)
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string AssemblyCompany
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
|
||||||
|
if (attributes.Length == 0)
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return ((AssemblyCompanyAttribute)attributes[0]).Company;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
610
WmiExplorer/Forms/Form_About.resx
Normal file
610
WmiExplorer/Forms/Form_About.resx
Normal file
|
|
@ -0,0 +1,610 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="logoPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
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
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="textBoxDescription.Text" xml:space="preserve">
|
||||||
|
<value>WMI Explorer is a utility intended to provide the ability to browse and view WMI objects in a single pane of view.
|
||||||
|
|
||||||
|
This application is written by Vinay Pamnani and is provided without any warranties or support. Special thanks to Tim Helton for his guidance and support.
|
||||||
|
|
||||||
|
For feedback/suggestions/bugs, please post on https://github.com/vinaypamnani/wmie2/issues</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
169
WmiExplorer/Forms/Form_ConnectAs.Designer.cs
generated
Normal file
169
WmiExplorer/Forms/Form_ConnectAs.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,169 @@
|
||||||
|
namespace WmiExplorer.Forms
|
||||||
|
{
|
||||||
|
partial class Form_ConnectAs
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.buttonCancel = new System.Windows.Forms.Button();
|
||||||
|
this.buttonConnect = new System.Windows.Forms.Button();
|
||||||
|
this.labelPassword = new System.Windows.Forms.Label();
|
||||||
|
this.textBoxPassword = new System.Windows.Forms.TextBox();
|
||||||
|
this.labelUsername = new System.Windows.Forms.Label();
|
||||||
|
this.textBoxUsername = new System.Windows.Forms.TextBox();
|
||||||
|
this.labelPath = new System.Windows.Forms.Label();
|
||||||
|
this.textBoxPath = new System.Windows.Forms.TextBox();
|
||||||
|
this.labelDescription = new System.Windows.Forms.Label();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// buttonCancel
|
||||||
|
//
|
||||||
|
this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
this.buttonCancel.Location = new System.Drawing.Point(15, 178);
|
||||||
|
this.buttonCancel.Margin = new System.Windows.Forms.Padding(10);
|
||||||
|
this.buttonCancel.Name = "buttonCancel";
|
||||||
|
this.buttonCancel.Size = new System.Drawing.Size(108, 23);
|
||||||
|
this.buttonCancel.TabIndex = 4;
|
||||||
|
this.buttonCancel.Text = "Cancel";
|
||||||
|
this.buttonCancel.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
|
||||||
|
//
|
||||||
|
// buttonConnect
|
||||||
|
//
|
||||||
|
this.buttonConnect.Location = new System.Drawing.Point(259, 178);
|
||||||
|
this.buttonConnect.Margin = new System.Windows.Forms.Padding(10);
|
||||||
|
this.buttonConnect.Name = "buttonConnect";
|
||||||
|
this.buttonConnect.Size = new System.Drawing.Size(113, 23);
|
||||||
|
this.buttonConnect.TabIndex = 3;
|
||||||
|
this.buttonConnect.Text = "Connect";
|
||||||
|
this.buttonConnect.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonConnect.Click += new System.EventHandler(this.buttonOk_Click);
|
||||||
|
//
|
||||||
|
// labelPassword
|
||||||
|
//
|
||||||
|
this.labelPassword.AutoSize = true;
|
||||||
|
this.labelPassword.Location = new System.Drawing.Point(12, 129);
|
||||||
|
this.labelPassword.Name = "labelPassword";
|
||||||
|
this.labelPassword.Size = new System.Drawing.Size(56, 13);
|
||||||
|
this.labelPassword.TabIndex = 18;
|
||||||
|
this.labelPassword.Text = "Password:";
|
||||||
|
//
|
||||||
|
// textBoxPassword
|
||||||
|
//
|
||||||
|
this.textBoxPassword.Location = new System.Drawing.Point(15, 146);
|
||||||
|
this.textBoxPassword.Name = "textBoxPassword";
|
||||||
|
this.textBoxPassword.Size = new System.Drawing.Size(357, 20);
|
||||||
|
this.textBoxPassword.TabIndex = 2;
|
||||||
|
this.textBoxPassword.UseSystemPasswordChar = true;
|
||||||
|
//
|
||||||
|
// labelUsername
|
||||||
|
//
|
||||||
|
this.labelUsername.AutoSize = true;
|
||||||
|
this.labelUsername.Location = new System.Drawing.Point(12, 86);
|
||||||
|
this.labelUsername.Name = "labelUsername";
|
||||||
|
this.labelUsername.Size = new System.Drawing.Size(169, 13);
|
||||||
|
this.labelUsername.TabIndex = 16;
|
||||||
|
this.labelUsername.Text = "Username (DOMAIN\\User format):";
|
||||||
|
//
|
||||||
|
// textBoxUsername
|
||||||
|
//
|
||||||
|
this.textBoxUsername.Location = new System.Drawing.Point(15, 103);
|
||||||
|
this.textBoxUsername.Name = "textBoxUsername";
|
||||||
|
this.textBoxUsername.Size = new System.Drawing.Size(357, 20);
|
||||||
|
this.textBoxUsername.TabIndex = 1;
|
||||||
|
//
|
||||||
|
// labelPath
|
||||||
|
//
|
||||||
|
this.labelPath.AutoSize = true;
|
||||||
|
this.labelPath.Location = new System.Drawing.Point(12, 43);
|
||||||
|
this.labelPath.Name = "labelPath";
|
||||||
|
this.labelPath.Size = new System.Drawing.Size(122, 13);
|
||||||
|
this.labelPath.TabIndex = 14;
|
||||||
|
this.labelPath.Text = "Remote Computer/Path:";
|
||||||
|
//
|
||||||
|
// textBoxPath
|
||||||
|
//
|
||||||
|
this.textBoxPath.Location = new System.Drawing.Point(15, 60);
|
||||||
|
this.textBoxPath.Name = "textBoxPath";
|
||||||
|
this.textBoxPath.Size = new System.Drawing.Size(357, 20);
|
||||||
|
this.textBoxPath.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// labelDescription
|
||||||
|
//
|
||||||
|
this.labelDescription.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.labelDescription.Location = new System.Drawing.Point(12, 9);
|
||||||
|
this.labelDescription.Name = "labelDescription";
|
||||||
|
this.labelDescription.Size = new System.Drawing.Size(360, 36);
|
||||||
|
this.labelDescription.TabIndex = 5;
|
||||||
|
this.labelDescription.Text = "Connect to a remote computer/path using Alternate Credentials. Alternate Credenti" +
|
||||||
|
"als can only be used for remote connections.";
|
||||||
|
//
|
||||||
|
// Form_ConnectAs
|
||||||
|
//
|
||||||
|
this.AcceptButton = this.buttonConnect;
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||||
|
this.AutoSize = true;
|
||||||
|
this.CancelButton = this.buttonCancel;
|
||||||
|
this.ClientSize = new System.Drawing.Size(384, 211);
|
||||||
|
this.ControlBox = false;
|
||||||
|
this.Controls.Add(this.buttonConnect);
|
||||||
|
this.Controls.Add(this.buttonCancel);
|
||||||
|
this.Controls.Add(this.textBoxPassword);
|
||||||
|
this.Controls.Add(this.labelPassword);
|
||||||
|
this.Controls.Add(this.textBoxUsername);
|
||||||
|
this.Controls.Add(this.labelUsername);
|
||||||
|
this.Controls.Add(this.textBoxPath);
|
||||||
|
this.Controls.Add(this.labelPath);
|
||||||
|
this.Controls.Add(this.labelDescription);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||||
|
this.MinimizeBox = false;
|
||||||
|
this.Name = "Form_ConnectAs";
|
||||||
|
this.ShowIcon = false;
|
||||||
|
this.ShowInTaskbar = false;
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
|
this.Text = "Connect As...";
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.Button buttonCancel;
|
||||||
|
private System.Windows.Forms.Button buttonConnect;
|
||||||
|
private System.Windows.Forms.Label labelPassword;
|
||||||
|
private System.Windows.Forms.TextBox textBoxPassword;
|
||||||
|
private System.Windows.Forms.Label labelUsername;
|
||||||
|
private System.Windows.Forms.TextBox textBoxUsername;
|
||||||
|
private System.Windows.Forms.Label labelPath;
|
||||||
|
private System.Windows.Forms.TextBox textBoxPath;
|
||||||
|
private System.Windows.Forms.Label labelDescription;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
63
WmiExplorer/Forms/Form_ConnectAs.cs
Normal file
63
WmiExplorer/Forms/Form_ConnectAs.cs
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
using System;
|
||||||
|
using System.Management;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using WmiExplorer.Classes;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Forms
|
||||||
|
{
|
||||||
|
public partial class Form_ConnectAs : Form
|
||||||
|
{
|
||||||
|
public ConnectionOptions Connection;
|
||||||
|
public string Path;
|
||||||
|
public bool Cancelled;
|
||||||
|
|
||||||
|
public Form_ConnectAs(string path = "")
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
if (!String.IsNullOrEmpty(path))
|
||||||
|
{
|
||||||
|
textBoxPath.Text = path;
|
||||||
|
textBoxPath.ReadOnly = true;
|
||||||
|
textBoxUsername.Select();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonOk_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (String.IsNullOrEmpty(textBoxPath.Text))
|
||||||
|
{
|
||||||
|
MessageBox.Show("No path specified. Please specify a remote computer/path to connect to. ",
|
||||||
|
"Invalid Path", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Path = textBoxPath.Text.ToUpperInvariant();
|
||||||
|
Connection = new ConnectionOptions
|
||||||
|
{
|
||||||
|
EnablePrivileges = true,
|
||||||
|
Impersonation = ImpersonationLevel.Impersonate,
|
||||||
|
Authentication = AuthenticationLevel.Default,
|
||||||
|
Username = textBoxUsername.Text,
|
||||||
|
SecurePassword = textBoxPassword.Text.StringToSecureString()
|
||||||
|
};
|
||||||
|
|
||||||
|
if (String.IsNullOrEmpty(textBoxUsername.Text))
|
||||||
|
{
|
||||||
|
MessageBox.Show("No username specified. Logged on user's credentials will be used. ",
|
||||||
|
"Invalid Credentials", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||||
|
Connection.Username = null;
|
||||||
|
Connection.SecurePassword = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonCancel_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Cancelled = true;
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
120
WmiExplorer/Forms/Form_ConnectAs.resx
Normal file
120
WmiExplorer/Forms/Form_ConnectAs.resx
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
101
WmiExplorer/Forms/Form_DisplayText.Designer.cs
generated
Normal file
101
WmiExplorer/Forms/Form_DisplayText.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,101 @@
|
||||||
|
namespace WmiExplorer.Forms
|
||||||
|
{
|
||||||
|
partial class Form_DisplayText
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.buttonOk = new System.Windows.Forms.Button();
|
||||||
|
this.richTextBox = new System.Windows.Forms.RichTextBox();
|
||||||
|
this.labelCaption = new System.Windows.Forms.Label();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// buttonOk
|
||||||
|
//
|
||||||
|
this.buttonOk.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
|
||||||
|
this.buttonOk.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
this.buttonOk.Location = new System.Drawing.Point(194, 249);
|
||||||
|
this.buttonOk.Name = "buttonOk";
|
||||||
|
this.buttonOk.Size = new System.Drawing.Size(100, 25);
|
||||||
|
this.buttonOk.TabIndex = 2;
|
||||||
|
this.buttonOk.Text = "OK";
|
||||||
|
this.buttonOk.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonOk.Click += new System.EventHandler(this.buttonOk_Click);
|
||||||
|
//
|
||||||
|
// richTextBox
|
||||||
|
//
|
||||||
|
this.richTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.richTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
|
this.richTextBox.Location = new System.Drawing.Point(12, 49);
|
||||||
|
this.richTextBox.Name = "richTextBox";
|
||||||
|
this.richTextBox.ReadOnly = true;
|
||||||
|
this.richTextBox.Size = new System.Drawing.Size(470, 194);
|
||||||
|
this.richTextBox.TabIndex = 3;
|
||||||
|
this.richTextBox.Text = "";
|
||||||
|
this.richTextBox.WordWrap = false;
|
||||||
|
//
|
||||||
|
// labelCaption
|
||||||
|
//
|
||||||
|
this.labelCaption.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.labelCaption.BackColor = System.Drawing.Color.LightSteelBlue;
|
||||||
|
this.labelCaption.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.labelCaption.Name = "labelCaption";
|
||||||
|
this.labelCaption.Padding = new System.Windows.Forms.Padding(5);
|
||||||
|
this.labelCaption.Size = new System.Drawing.Size(488, 35);
|
||||||
|
this.labelCaption.TabIndex = 5;
|
||||||
|
this.labelCaption.Text = "Title";
|
||||||
|
this.labelCaption.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
//
|
||||||
|
// Form_DisplayText
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||||
|
this.CancelButton = this.buttonOk;
|
||||||
|
this.ClientSize = new System.Drawing.Size(484, 286);
|
||||||
|
this.Controls.Add(this.labelCaption);
|
||||||
|
this.Controls.Add(this.richTextBox);
|
||||||
|
this.Controls.Add(this.buttonOk);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
|
||||||
|
this.Name = "Form_DisplayText";
|
||||||
|
this.ShowIcon = false;
|
||||||
|
this.ShowInTaskbar = false;
|
||||||
|
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
|
this.Text = "Form_DisplayText";
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.Button buttonOk;
|
||||||
|
private System.Windows.Forms.RichTextBox richTextBox;
|
||||||
|
private System.Windows.Forms.Label labelCaption;
|
||||||
|
}
|
||||||
|
}
|
||||||
28
WmiExplorer/Forms/Form_DisplayText.cs
Normal file
28
WmiExplorer/Forms/Form_DisplayText.cs
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Forms
|
||||||
|
{
|
||||||
|
public partial class Form_DisplayText : Form
|
||||||
|
{
|
||||||
|
public Form_DisplayText(string windowTitle, string caption, string text)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
labelCaption.Font = new Font("Arial", 10, FontStyle.Bold);
|
||||||
|
Text = windowTitle;
|
||||||
|
labelCaption.Text = caption;
|
||||||
|
richTextBox.Text = text;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonOk_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
120
WmiExplorer/Forms/Form_DisplayText.resx
Normal file
120
WmiExplorer/Forms/Form_DisplayText.resx
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
224
WmiExplorer/Forms/Form_ExecMethod.Designer.cs
generated
Normal file
224
WmiExplorer/Forms/Form_ExecMethod.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,224 @@
|
||||||
|
namespace WmiExplorer.Forms
|
||||||
|
{
|
||||||
|
partial class Form_ExecMethod
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.groupBoxInParams = new System.Windows.Forms.GroupBox();
|
||||||
|
this.panelInParams = new System.Windows.Forms.Panel();
|
||||||
|
this.labelInput = new System.Windows.Forms.Label();
|
||||||
|
this.groupBoxOutParams = new System.Windows.Forms.GroupBox();
|
||||||
|
this.propertyGridOutParams = new System.Windows.Forms.PropertyGrid();
|
||||||
|
this.panelButtons = new System.Windows.Forms.Panel();
|
||||||
|
this.buttonClose = new System.Windows.Forms.Button();
|
||||||
|
this.buttonCopyOutput = new System.Windows.Forms.Button();
|
||||||
|
this.buttonExecute = new System.Windows.Forms.Button();
|
||||||
|
this.statusStrip = new System.Windows.Forms.StatusStrip();
|
||||||
|
this.toolStripLabel = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.labelCaption = new System.Windows.Forms.Label();
|
||||||
|
this.groupBoxInParams.SuspendLayout();
|
||||||
|
this.panelInParams.SuspendLayout();
|
||||||
|
this.groupBoxOutParams.SuspendLayout();
|
||||||
|
this.panelButtons.SuspendLayout();
|
||||||
|
this.statusStrip.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// groupBoxInParams
|
||||||
|
//
|
||||||
|
this.groupBoxInParams.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.groupBoxInParams.Controls.Add(this.panelInParams);
|
||||||
|
this.groupBoxInParams.Location = new System.Drawing.Point(12, 48);
|
||||||
|
this.groupBoxInParams.Name = "groupBoxInParams";
|
||||||
|
this.groupBoxInParams.Size = new System.Drawing.Size(410, 54);
|
||||||
|
this.groupBoxInParams.TabIndex = 0;
|
||||||
|
this.groupBoxInParams.TabStop = false;
|
||||||
|
this.groupBoxInParams.Text = "Input Parameters";
|
||||||
|
//
|
||||||
|
// panelInParams
|
||||||
|
//
|
||||||
|
this.panelInParams.AutoScroll = true;
|
||||||
|
this.panelInParams.Controls.Add(this.labelInput);
|
||||||
|
this.panelInParams.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.panelInParams.Location = new System.Drawing.Point(3, 16);
|
||||||
|
this.panelInParams.Name = "panelInParams";
|
||||||
|
this.panelInParams.Size = new System.Drawing.Size(404, 35);
|
||||||
|
this.panelInParams.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// labelInput
|
||||||
|
//
|
||||||
|
this.labelInput.AutoSize = true;
|
||||||
|
this.labelInput.Location = new System.Drawing.Point(3, 5);
|
||||||
|
this.labelInput.Name = "labelInput";
|
||||||
|
this.labelInput.Size = new System.Drawing.Size(157, 13);
|
||||||
|
this.labelInput.TabIndex = 0;
|
||||||
|
this.labelInput.Text = "Specify Input Parameter values:";
|
||||||
|
//
|
||||||
|
// groupBoxOutParams
|
||||||
|
//
|
||||||
|
this.groupBoxOutParams.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.groupBoxOutParams.Controls.Add(this.propertyGridOutParams);
|
||||||
|
this.groupBoxOutParams.Location = new System.Drawing.Point(12, 108);
|
||||||
|
this.groupBoxOutParams.Name = "groupBoxOutParams";
|
||||||
|
this.groupBoxOutParams.Size = new System.Drawing.Size(410, 150);
|
||||||
|
this.groupBoxOutParams.TabIndex = 1;
|
||||||
|
this.groupBoxOutParams.TabStop = false;
|
||||||
|
this.groupBoxOutParams.Text = "Output Parameters";
|
||||||
|
//
|
||||||
|
// propertyGridOutParams
|
||||||
|
//
|
||||||
|
this.propertyGridOutParams.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.propertyGridOutParams.HelpVisible = false;
|
||||||
|
this.propertyGridOutParams.Location = new System.Drawing.Point(3, 16);
|
||||||
|
this.propertyGridOutParams.Name = "propertyGridOutParams";
|
||||||
|
this.propertyGridOutParams.Size = new System.Drawing.Size(404, 131);
|
||||||
|
this.propertyGridOutParams.TabIndex = 0;
|
||||||
|
this.propertyGridOutParams.TabStop = false;
|
||||||
|
this.propertyGridOutParams.ToolbarVisible = false;
|
||||||
|
//
|
||||||
|
// panelButtons
|
||||||
|
//
|
||||||
|
this.panelButtons.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.panelButtons.Controls.Add(this.buttonClose);
|
||||||
|
this.panelButtons.Controls.Add(this.buttonCopyOutput);
|
||||||
|
this.panelButtons.Controls.Add(this.buttonExecute);
|
||||||
|
this.panelButtons.Location = new System.Drawing.Point(12, 257);
|
||||||
|
this.panelButtons.Name = "panelButtons";
|
||||||
|
this.panelButtons.Size = new System.Drawing.Size(410, 42);
|
||||||
|
this.panelButtons.TabIndex = 2;
|
||||||
|
//
|
||||||
|
// buttonClose
|
||||||
|
//
|
||||||
|
this.buttonClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
this.buttonClose.Location = new System.Drawing.Point(329, 9);
|
||||||
|
this.buttonClose.Name = "buttonClose";
|
||||||
|
this.buttonClose.Size = new System.Drawing.Size(75, 23);
|
||||||
|
this.buttonClose.TabIndex = 2;
|
||||||
|
this.buttonClose.Text = "Close";
|
||||||
|
this.buttonClose.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonClose.Click += new System.EventHandler(this.buttonClose_Click);
|
||||||
|
//
|
||||||
|
// buttonCopyOutput
|
||||||
|
//
|
||||||
|
this.buttonCopyOutput.Location = new System.Drawing.Point(166, 9);
|
||||||
|
this.buttonCopyOutput.Name = "buttonCopyOutput";
|
||||||
|
this.buttonCopyOutput.Size = new System.Drawing.Size(75, 23);
|
||||||
|
this.buttonCopyOutput.TabIndex = 1;
|
||||||
|
this.buttonCopyOutput.Text = "Copy Output";
|
||||||
|
this.buttonCopyOutput.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonCopyOutput.Click += new System.EventHandler(this.buttonCopyOutput_Click);
|
||||||
|
//
|
||||||
|
// buttonExecute
|
||||||
|
//
|
||||||
|
this.buttonExecute.Location = new System.Drawing.Point(248, 9);
|
||||||
|
this.buttonExecute.Name = "buttonExecute";
|
||||||
|
this.buttonExecute.Size = new System.Drawing.Size(75, 23);
|
||||||
|
this.buttonExecute.TabIndex = 0;
|
||||||
|
this.buttonExecute.Text = "Execute";
|
||||||
|
this.buttonExecute.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonExecute.Click += new System.EventHandler(this.buttonExecute_Click);
|
||||||
|
//
|
||||||
|
// statusStrip
|
||||||
|
//
|
||||||
|
this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.toolStripLabel});
|
||||||
|
this.statusStrip.Location = new System.Drawing.Point(0, 300);
|
||||||
|
this.statusStrip.Name = "statusStrip";
|
||||||
|
this.statusStrip.Size = new System.Drawing.Size(434, 22);
|
||||||
|
this.statusStrip.SizingGrip = false;
|
||||||
|
this.statusStrip.TabIndex = 3;
|
||||||
|
this.statusStrip.Text = "statusStrip1";
|
||||||
|
//
|
||||||
|
// toolStripLabel
|
||||||
|
//
|
||||||
|
this.toolStripLabel.Name = "toolStripLabel";
|
||||||
|
this.toolStripLabel.Size = new System.Drawing.Size(112, 17);
|
||||||
|
this.toolStripLabel.Text = "toolStripStatusLabel";
|
||||||
|
//
|
||||||
|
// labelCaption
|
||||||
|
//
|
||||||
|
this.labelCaption.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.labelCaption.BackColor = System.Drawing.Color.LightSteelBlue;
|
||||||
|
this.labelCaption.Location = new System.Drawing.Point(0, -1);
|
||||||
|
this.labelCaption.Name = "labelCaption";
|
||||||
|
this.labelCaption.Padding = new System.Windows.Forms.Padding(5);
|
||||||
|
this.labelCaption.Size = new System.Drawing.Size(434, 46);
|
||||||
|
this.labelCaption.TabIndex = 4;
|
||||||
|
this.labelCaption.Text = "Title";
|
||||||
|
this.labelCaption.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
//
|
||||||
|
// Form_ExecMethod
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||||
|
this.AutoSize = true;
|
||||||
|
this.CancelButton = this.buttonClose;
|
||||||
|
this.ClientSize = new System.Drawing.Size(434, 322);
|
||||||
|
this.Controls.Add(this.labelCaption);
|
||||||
|
this.Controls.Add(this.statusStrip);
|
||||||
|
this.Controls.Add(this.panelButtons);
|
||||||
|
this.Controls.Add(this.groupBoxOutParams);
|
||||||
|
this.Controls.Add(this.groupBoxInParams);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||||
|
this.MaximizeBox = false;
|
||||||
|
this.MinimizeBox = false;
|
||||||
|
this.Name = "Form_ExecMethod";
|
||||||
|
this.ShowIcon = false;
|
||||||
|
this.ShowInTaskbar = false;
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
|
this.Text = "Execute Method ";
|
||||||
|
this.groupBoxInParams.ResumeLayout(false);
|
||||||
|
this.panelInParams.ResumeLayout(false);
|
||||||
|
this.panelInParams.PerformLayout();
|
||||||
|
this.groupBoxOutParams.ResumeLayout(false);
|
||||||
|
this.panelButtons.ResumeLayout(false);
|
||||||
|
this.statusStrip.ResumeLayout(false);
|
||||||
|
this.statusStrip.PerformLayout();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.GroupBox groupBoxInParams;
|
||||||
|
private System.Windows.Forms.Panel panelInParams;
|
||||||
|
private System.Windows.Forms.Label labelInput;
|
||||||
|
private System.Windows.Forms.GroupBox groupBoxOutParams;
|
||||||
|
private System.Windows.Forms.PropertyGrid propertyGridOutParams;
|
||||||
|
private System.Windows.Forms.Panel panelButtons;
|
||||||
|
private System.Windows.Forms.Button buttonClose;
|
||||||
|
private System.Windows.Forms.Button buttonCopyOutput;
|
||||||
|
private System.Windows.Forms.Button buttonExecute;
|
||||||
|
private System.Windows.Forms.StatusStrip statusStrip;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel toolStripLabel;
|
||||||
|
private System.Windows.Forms.Label labelCaption;
|
||||||
|
}
|
||||||
|
}
|
||||||
324
WmiExplorer/Forms/Form_ExecMethod.cs
Normal file
324
WmiExplorer/Forms/Form_ExecMethod.cs
Normal file
|
|
@ -0,0 +1,324 @@
|
||||||
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Management;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using WmiExplorer.Classes;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Forms
|
||||||
|
{
|
||||||
|
public partial class Form_ExecMethod : Form
|
||||||
|
{
|
||||||
|
private ManagementObject _mObject;
|
||||||
|
private MethodData _method;
|
||||||
|
private string _clipboardText = String.Empty;
|
||||||
|
|
||||||
|
public Form_ExecMethod(ManagementObject mObject, MethodData method)
|
||||||
|
{
|
||||||
|
_mObject = mObject;
|
||||||
|
_method = method;
|
||||||
|
InitializeComponent();
|
||||||
|
//InitializeUi();
|
||||||
|
InitializeForm();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitializeForm()
|
||||||
|
{
|
||||||
|
// Update Form Title
|
||||||
|
labelCaption.Text = _method.Name + " Method for \n" + _mObject.ClassPath.Path;
|
||||||
|
toolStripLabel.Text = String.Empty;
|
||||||
|
|
||||||
|
// Populate Input Parameters
|
||||||
|
if (_method.InParameters == null ||_method.InParameters.Properties.Count == 0)
|
||||||
|
{
|
||||||
|
labelInput.Text = "This method doesn't have any Input Parameters.";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Label[] label = new Label[_method.InParameters.Properties.Count];
|
||||||
|
TextBox[] textBox = new TextBox[_method.InParameters.Properties.Count];
|
||||||
|
Control[] paramControls = new Control[_method.InParameters.Properties.Count];
|
||||||
|
|
||||||
|
var i = 0;
|
||||||
|
var maxLabelWidth = 0;
|
||||||
|
foreach (PropertyData inParam in _method.InParameters.Properties)
|
||||||
|
{
|
||||||
|
// Create a label
|
||||||
|
label[i] = new Label
|
||||||
|
{
|
||||||
|
AutoSize = true,
|
||||||
|
TextAlign = ContentAlignment.MiddleLeft,
|
||||||
|
Text = inParam.Name + " (" + inParam.Type + ") :"
|
||||||
|
};
|
||||||
|
|
||||||
|
// Set location appropriately for the first property
|
||||||
|
if (i == 0)
|
||||||
|
{
|
||||||
|
label[i].Location = new Point(6, labelInput.Bottom + 10);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
label[i].Location = new Point(6, label[i-1].Bottom + 15);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set Max Label width
|
||||||
|
if (label[i].PreferredWidth > maxLabelWidth)
|
||||||
|
maxLabelWidth = label[i].PreferredWidth;
|
||||||
|
|
||||||
|
// Create a new textbox or checkbox depending on type
|
||||||
|
|
||||||
|
if (inParam.Type == CimType.Boolean)
|
||||||
|
{
|
||||||
|
paramControls[i] = new CheckBox
|
||||||
|
{
|
||||||
|
Text = String.Empty,
|
||||||
|
Tag = inParam.Name,
|
||||||
|
Checked = false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (inParam.Type == CimType.Object || inParam.Type == CimType.Reference)
|
||||||
|
{
|
||||||
|
paramControls[i] = new TextBox
|
||||||
|
{
|
||||||
|
Text = "Object parameter not supported",
|
||||||
|
ReadOnly = true,
|
||||||
|
Tag = inParam.Name
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
paramControls[i] = new TextBox
|
||||||
|
{
|
||||||
|
Text = String.Empty,
|
||||||
|
Tag = inParam.Name
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Add controls to Panel
|
||||||
|
panelInParams.Controls.Add(label[i]);
|
||||||
|
panelInParams.Controls.Add(paramControls[i]);
|
||||||
|
|
||||||
|
// Resize groupbox to adjust for the new property. Stop resizing after 5 properties.
|
||||||
|
if (i < 5)
|
||||||
|
groupBoxInParams.Height += (label[i].Height * 2);
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set textbox location now that we have the max Label width
|
||||||
|
for (i = 0; i < _method.InParameters.Properties.Count; i++)
|
||||||
|
{
|
||||||
|
if (paramControls[i] is TextBox)
|
||||||
|
{
|
||||||
|
paramControls[i].Location = new Point(maxLabelWidth + 15, label[i].Top - 3);
|
||||||
|
paramControls[i].Width = panelInParams.Width - (maxLabelWidth + 40);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (paramControls[i] is CheckBox)
|
||||||
|
{
|
||||||
|
paramControls[i].Location = new Point(maxLabelWidth + 15, label[i].Top - 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reposition controls
|
||||||
|
groupBoxOutParams.Location = new Point(groupBoxInParams.Left, groupBoxInParams.Bottom + 3);
|
||||||
|
panelButtons.Location = new Point(groupBoxOutParams.Left, groupBoxOutParams.Bottom + 3);
|
||||||
|
|
||||||
|
// Resize form
|
||||||
|
this.Size = new Size(this.Width, labelCaption.Height + groupBoxInParams.Height + groupBoxOutParams.Height + panelButtons.Height + statusStrip.Height + 50);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitializeUi()
|
||||||
|
{
|
||||||
|
Label[] label = new Label[10];
|
||||||
|
TextBox[] textBox = new TextBox[10];
|
||||||
|
|
||||||
|
// Add Input Parameters
|
||||||
|
for (var i = 1; i <= 7; i++)
|
||||||
|
{
|
||||||
|
if (i == 1)
|
||||||
|
{
|
||||||
|
label[i] = new Label
|
||||||
|
{
|
||||||
|
Location = new Point(6, labelInput.Bottom + 10),
|
||||||
|
AutoSize = true,
|
||||||
|
TextAlign = ContentAlignment.MiddleLeft,
|
||||||
|
Text = "Property Name: "
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
label[i] = new Label
|
||||||
|
{
|
||||||
|
Location = new Point(6, label[i-1].Bottom + 15),
|
||||||
|
AutoSize = true,
|
||||||
|
TextAlign = ContentAlignment.MiddleLeft,
|
||||||
|
Text = "Property Name: "
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
textBox[i] = new TextBox
|
||||||
|
{
|
||||||
|
Location = new Point(label[i].Width + 30, label[i].Top - 3),
|
||||||
|
Width = 200,
|
||||||
|
Text = String.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
panelInParams.Controls.Add(label[i]);
|
||||||
|
panelInParams.Controls.Add(textBox[i]);
|
||||||
|
|
||||||
|
groupBoxInParams.Height += (label[i].Height * 2);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add Output Parameters
|
||||||
|
|
||||||
|
GroupBox groupBoxOutParamsTest = new GroupBox();
|
||||||
|
groupBoxOutParamsTest.Location = new Point(groupBoxInParams.Left, groupBoxInParams.Bottom + 10);
|
||||||
|
groupBoxOutParamsTest.Size = new Size(groupBoxInParams.Width, 150);
|
||||||
|
groupBoxOutParamsTest.Text = "Output Parameters";
|
||||||
|
|
||||||
|
PropertyGrid outParamsPropertyGrid = new PropertyGrid();
|
||||||
|
outParamsPropertyGrid.Dock = DockStyle.Fill;
|
||||||
|
outParamsPropertyGrid.HelpVisible = false;
|
||||||
|
outParamsPropertyGrid.ToolbarVisible = false;
|
||||||
|
|
||||||
|
groupBoxOutParamsTest.Controls.Add(outParamsPropertyGrid);
|
||||||
|
this.Controls.Add(groupBoxOutParamsTest);
|
||||||
|
|
||||||
|
// Resize form
|
||||||
|
this.Size = new Size(this.Width, groupBoxInParams.Height + groupBoxOutParamsTest.Height + 25);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonClose_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonExecute_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ExecuteMethod();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ExecuteMethod()
|
||||||
|
{
|
||||||
|
string returnString = String.Empty;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.Cursor = Cursors.WaitCursor;
|
||||||
|
SetStatusBar("Executing method...", MessageCategory.Action);
|
||||||
|
|
||||||
|
ManagementBaseObject inParams = _mObject.GetMethodParameters(_method.Name);
|
||||||
|
|
||||||
|
foreach (Control control in panelInParams.Controls)
|
||||||
|
{
|
||||||
|
if (control is TextBox)
|
||||||
|
{
|
||||||
|
inParams[control.Tag.ToString()] = control.Text;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (control is CheckBox)
|
||||||
|
{
|
||||||
|
inParams[control.Tag.ToString()] = ((CheckBox) control).Checked.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ManagementBaseObject outParams = _mObject.InvokeMethod(_method.Name, inParams, null);
|
||||||
|
|
||||||
|
if (outParams != null && outParams.Properties.Count > 0)
|
||||||
|
{
|
||||||
|
ManagementBaseObjectW outParamsW = new ManagementBaseObjectW(outParams);
|
||||||
|
propertyGridOutParams.SelectedObject = outParamsW;
|
||||||
|
_clipboardText = outParams.GetText(TextFormat.Mof).Replace("\n", "\r\n");
|
||||||
|
SetStatusBar("Successfully executed method.", MessageCategory.Info);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetStatusBar("Successfully executed method. No output parameters.", MessageCategory.Info);
|
||||||
|
}
|
||||||
|
|
||||||
|
returnString = "Successfully executed method " + _method.Name + " of object " + _mObject.Path.RelativePath;
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
SetStatusBar("Method Execution Failed. Error: " + ex.Message, MessageCategory.Error);
|
||||||
|
returnString = "Failed to execute method " + _method.Name + " of object " + _mObject.Path.RelativePath + ". Error: " + ex.Message;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
WmiExplorer parentForm = (WmiExplorer) this.Owner;
|
||||||
|
parentForm.Log(returnString);
|
||||||
|
this.Cursor = Cursors.Default;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonCopyOutput_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!String.IsNullOrEmpty(_clipboardText))
|
||||||
|
Clipboard.SetText(_clipboardText);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetStatusBar(string text, MessageCategory messagecategory)
|
||||||
|
{
|
||||||
|
if (text != String.Empty)
|
||||||
|
{
|
||||||
|
toolStripLabel.BorderSides = ToolStripStatusLabelBorderSides.All;
|
||||||
|
toolStripLabel.BorderStyle = Border3DStyle.SunkenInner;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
toolStripLabel.BorderSides = ToolStripStatusLabelBorderSides.None;
|
||||||
|
toolStripLabel.BorderStyle = Border3DStyle.Flat;
|
||||||
|
}
|
||||||
|
|
||||||
|
toolStripLabel.Text = text;
|
||||||
|
|
||||||
|
switch (messagecategory)
|
||||||
|
{
|
||||||
|
case MessageCategory.Info:
|
||||||
|
toolStripLabel.BackColor = Color.LightSteelBlue;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MessageCategory.Action:
|
||||||
|
toolStripLabel.BackColor = ColorCategory.Action;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MessageCategory.Warn:
|
||||||
|
toolStripLabel.BackColor = ColorCategory.Warn;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MessageCategory.Cache:
|
||||||
|
toolStripLabel.BackColor = ColorCategory.Cache;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MessageCategory.Error:
|
||||||
|
toolStripLabel.BackColor = ColorCategory.Error;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MessageCategory.Sms:
|
||||||
|
toolStripLabel.BackColor = ColorCategory.Sms;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MessageCategory.None:
|
||||||
|
toolStripLabel.BackColor = ColorCategory.None;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
toolStripLabel.BackColor = ColorCategory.Unknown;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
123
WmiExplorer/Forms/Form_ExecMethod.resx
Normal file
123
WmiExplorer/Forms/Form_ExecMethod.resx
Normal file
|
|
@ -0,0 +1,123 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
|
</root>
|
||||||
254
WmiExplorer/Forms/Form_Settings.Designer.cs
generated
Normal file
254
WmiExplorer/Forms/Form_Settings.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,254 @@
|
||||||
|
namespace WmiExplorer.Forms
|
||||||
|
{
|
||||||
|
partial class Form_Settings
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.groupBoxSettings_General = new System.Windows.Forms.GroupBox();
|
||||||
|
this.checkBoxSettings_RememberEnumOptions = new System.Windows.Forms.CheckBox();
|
||||||
|
this.checkBoxSettings_RememberRecentPaths = new System.Windows.Forms.CheckBox();
|
||||||
|
this.checkBoxSettings_PreserveLayout = new System.Windows.Forms.CheckBox();
|
||||||
|
this.groupBoxSettings_Update = new System.Windows.Forms.GroupBox();
|
||||||
|
this.labelUpdate_LastUpdateCheck = new System.Windows.Forms.Label();
|
||||||
|
this.textBoxSettings_UpdateCheckInterval = new System.Windows.Forms.TextBox();
|
||||||
|
this.labelUpdate_CheckInterval = new System.Windows.Forms.Label();
|
||||||
|
this.checkBoxSettings_CheckForUpdates = new System.Windows.Forms.CheckBox();
|
||||||
|
this.groupBoxSettings_Caching = new System.Windows.Forms.GroupBox();
|
||||||
|
this.textBoxSettings_CacheAge = new System.Windows.Forms.TextBox();
|
||||||
|
this.labelCaching_CacheAge = new System.Windows.Forms.Label();
|
||||||
|
this.buttonSettings_Save = new System.Windows.Forms.Button();
|
||||||
|
this.buttonSettings_Cancel = new System.Windows.Forms.Button();
|
||||||
|
this.groupBoxSettings_General.SuspendLayout();
|
||||||
|
this.groupBoxSettings_Update.SuspendLayout();
|
||||||
|
this.groupBoxSettings_Caching.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// groupBoxSettings_General
|
||||||
|
//
|
||||||
|
this.groupBoxSettings_General.Controls.Add(this.checkBoxSettings_RememberEnumOptions);
|
||||||
|
this.groupBoxSettings_General.Controls.Add(this.checkBoxSettings_RememberRecentPaths);
|
||||||
|
this.groupBoxSettings_General.Controls.Add(this.checkBoxSettings_PreserveLayout);
|
||||||
|
this.groupBoxSettings_General.Location = new System.Drawing.Point(12, 12);
|
||||||
|
this.groupBoxSettings_General.Name = "groupBoxSettings_General";
|
||||||
|
this.groupBoxSettings_General.Size = new System.Drawing.Size(460, 86);
|
||||||
|
this.groupBoxSettings_General.TabIndex = 0;
|
||||||
|
this.groupBoxSettings_General.TabStop = false;
|
||||||
|
this.groupBoxSettings_General.Text = "General";
|
||||||
|
//
|
||||||
|
// checkBoxSettings_RememberEnumOptions
|
||||||
|
//
|
||||||
|
this.checkBoxSettings_RememberEnumOptions.AutoSize = true;
|
||||||
|
this.checkBoxSettings_RememberEnumOptions.Checked = global::WmiExplorer.Properties.Settings.Default.bRememberEnumOptions;
|
||||||
|
this.checkBoxSettings_RememberEnumOptions.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
|
this.checkBoxSettings_RememberEnumOptions.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::WmiExplorer.Properties.Settings.Default, "bRememberEnumOptions", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||||
|
this.checkBoxSettings_RememberEnumOptions.Location = new System.Drawing.Point(6, 65);
|
||||||
|
this.checkBoxSettings_RememberEnumOptions.Name = "checkBoxSettings_RememberEnumOptions";
|
||||||
|
this.checkBoxSettings_RememberEnumOptions.Size = new System.Drawing.Size(271, 17);
|
||||||
|
this.checkBoxSettings_RememberEnumOptions.TabIndex = 2;
|
||||||
|
this.checkBoxSettings_RememberEnumOptions.Text = "Remember Class and Instance Enumeration Options";
|
||||||
|
this.checkBoxSettings_RememberEnumOptions.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// checkBoxSettings_RememberRecentPaths
|
||||||
|
//
|
||||||
|
this.checkBoxSettings_RememberRecentPaths.AutoSize = true;
|
||||||
|
this.checkBoxSettings_RememberRecentPaths.Checked = global::WmiExplorer.Properties.Settings.Default.bRememberRecentPaths;
|
||||||
|
this.checkBoxSettings_RememberRecentPaths.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
|
this.checkBoxSettings_RememberRecentPaths.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::WmiExplorer.Properties.Settings.Default, "bRememberRecentPaths", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||||
|
this.checkBoxSettings_RememberRecentPaths.Location = new System.Drawing.Point(6, 42);
|
||||||
|
this.checkBoxSettings_RememberRecentPaths.Name = "checkBoxSettings_RememberRecentPaths";
|
||||||
|
this.checkBoxSettings_RememberRecentPaths.Size = new System.Drawing.Size(313, 17);
|
||||||
|
this.checkBoxSettings_RememberRecentPaths.TabIndex = 1;
|
||||||
|
this.checkBoxSettings_RememberRecentPaths.Text = "Remember previously connected Computer names and paths";
|
||||||
|
this.checkBoxSettings_RememberRecentPaths.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// checkBoxSettings_PreserveLayout
|
||||||
|
//
|
||||||
|
this.checkBoxSettings_PreserveLayout.AutoSize = true;
|
||||||
|
this.checkBoxSettings_PreserveLayout.Checked = global::WmiExplorer.Properties.Settings.Default.bPreserveLayout;
|
||||||
|
this.checkBoxSettings_PreserveLayout.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
|
this.checkBoxSettings_PreserveLayout.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::WmiExplorer.Properties.Settings.Default, "bPreserveLayout", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||||
|
this.checkBoxSettings_PreserveLayout.Location = new System.Drawing.Point(6, 19);
|
||||||
|
this.checkBoxSettings_PreserveLayout.Name = "checkBoxSettings_PreserveLayout";
|
||||||
|
this.checkBoxSettings_PreserveLayout.Size = new System.Drawing.Size(447, 17);
|
||||||
|
this.checkBoxSettings_PreserveLayout.TabIndex = 0;
|
||||||
|
this.checkBoxSettings_PreserveLayout.Text = "Remember UI Layout when application closes (Window Size, Location and Splitter Wi" +
|
||||||
|
"dth)";
|
||||||
|
this.checkBoxSettings_PreserveLayout.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// groupBoxSettings_Update
|
||||||
|
//
|
||||||
|
this.groupBoxSettings_Update.Controls.Add(this.labelUpdate_LastUpdateCheck);
|
||||||
|
this.groupBoxSettings_Update.Controls.Add(this.textBoxSettings_UpdateCheckInterval);
|
||||||
|
this.groupBoxSettings_Update.Controls.Add(this.labelUpdate_CheckInterval);
|
||||||
|
this.groupBoxSettings_Update.Controls.Add(this.checkBoxSettings_CheckForUpdates);
|
||||||
|
this.groupBoxSettings_Update.Location = new System.Drawing.Point(12, 156);
|
||||||
|
this.groupBoxSettings_Update.Name = "groupBoxSettings_Update";
|
||||||
|
this.groupBoxSettings_Update.Size = new System.Drawing.Size(460, 71);
|
||||||
|
this.groupBoxSettings_Update.TabIndex = 1;
|
||||||
|
this.groupBoxSettings_Update.TabStop = false;
|
||||||
|
this.groupBoxSettings_Update.Text = "Application Updates";
|
||||||
|
//
|
||||||
|
// labelUpdate_LastUpdateCheck
|
||||||
|
//
|
||||||
|
this.labelUpdate_LastUpdateCheck.AutoSize = true;
|
||||||
|
this.labelUpdate_LastUpdateCheck.Location = new System.Drawing.Point(240, 41);
|
||||||
|
this.labelUpdate_LastUpdateCheck.Name = "labelUpdate_LastUpdateCheck";
|
||||||
|
this.labelUpdate_LastUpdateCheck.Size = new System.Drawing.Size(105, 13);
|
||||||
|
this.labelUpdate_LastUpdateCheck.TabIndex = 3;
|
||||||
|
this.labelUpdate_LastUpdateCheck.Text = "Last Update Check: ";
|
||||||
|
//
|
||||||
|
// textBoxSettings_UpdateCheckInterval
|
||||||
|
//
|
||||||
|
this.textBoxSettings_UpdateCheckInterval.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::WmiExplorer.Properties.Settings.Default, "UpdateCheckIntervalInDays", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||||
|
this.textBoxSettings_UpdateCheckInterval.Location = new System.Drawing.Point(174, 38);
|
||||||
|
this.textBoxSettings_UpdateCheckInterval.Name = "textBoxSettings_UpdateCheckInterval";
|
||||||
|
this.textBoxSettings_UpdateCheckInterval.Size = new System.Drawing.Size(60, 20);
|
||||||
|
this.textBoxSettings_UpdateCheckInterval.TabIndex = 2;
|
||||||
|
this.textBoxSettings_UpdateCheckInterval.Text = global::WmiExplorer.Properties.Settings.Default.UpdateCheckIntervalInDays;
|
||||||
|
//
|
||||||
|
// labelUpdate_CheckInterval
|
||||||
|
//
|
||||||
|
this.labelUpdate_CheckInterval.AutoSize = true;
|
||||||
|
this.labelUpdate_CheckInterval.Location = new System.Drawing.Point(6, 41);
|
||||||
|
this.labelUpdate_CheckInterval.Name = "labelUpdate_CheckInterval";
|
||||||
|
this.labelUpdate_CheckInterval.Size = new System.Drawing.Size(162, 13);
|
||||||
|
this.labelUpdate_CheckInterval.TabIndex = 1;
|
||||||
|
this.labelUpdate_CheckInterval.Text = "Update Check Interval (In Days):";
|
||||||
|
//
|
||||||
|
// checkBoxSettings_CheckForUpdates
|
||||||
|
//
|
||||||
|
this.checkBoxSettings_CheckForUpdates.AutoSize = true;
|
||||||
|
this.checkBoxSettings_CheckForUpdates.Checked = global::WmiExplorer.Properties.Settings.Default.bCheckForUpdates;
|
||||||
|
this.checkBoxSettings_CheckForUpdates.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::WmiExplorer.Properties.Settings.Default, "bCheckForUpdates", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||||
|
this.checkBoxSettings_CheckForUpdates.Location = new System.Drawing.Point(9, 19);
|
||||||
|
this.checkBoxSettings_CheckForUpdates.Name = "checkBoxSettings_CheckForUpdates";
|
||||||
|
this.checkBoxSettings_CheckForUpdates.Size = new System.Drawing.Size(227, 17);
|
||||||
|
this.checkBoxSettings_CheckForUpdates.TabIndex = 0;
|
||||||
|
this.checkBoxSettings_CheckForUpdates.Text = "Automatically check for updates on launch";
|
||||||
|
this.checkBoxSettings_CheckForUpdates.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// groupBoxSettings_Caching
|
||||||
|
//
|
||||||
|
this.groupBoxSettings_Caching.Controls.Add(this.textBoxSettings_CacheAge);
|
||||||
|
this.groupBoxSettings_Caching.Controls.Add(this.labelCaching_CacheAge);
|
||||||
|
this.groupBoxSettings_Caching.Location = new System.Drawing.Point(12, 104);
|
||||||
|
this.groupBoxSettings_Caching.Name = "groupBoxSettings_Caching";
|
||||||
|
this.groupBoxSettings_Caching.Size = new System.Drawing.Size(460, 46);
|
||||||
|
this.groupBoxSettings_Caching.TabIndex = 2;
|
||||||
|
this.groupBoxSettings_Caching.TabStop = false;
|
||||||
|
this.groupBoxSettings_Caching.Text = "Caching";
|
||||||
|
//
|
||||||
|
// textBoxSettings_CacheAge
|
||||||
|
//
|
||||||
|
this.textBoxSettings_CacheAge.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::WmiExplorer.Properties.Settings.Default, "CacheAgeInMinutes", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||||
|
this.textBoxSettings_CacheAge.Location = new System.Drawing.Point(133, 16);
|
||||||
|
this.textBoxSettings_CacheAge.Name = "textBoxSettings_CacheAge";
|
||||||
|
this.textBoxSettings_CacheAge.Size = new System.Drawing.Size(60, 20);
|
||||||
|
this.textBoxSettings_CacheAge.TabIndex = 1;
|
||||||
|
this.textBoxSettings_CacheAge.Text = global::WmiExplorer.Properties.Settings.Default.CacheAgeInMinutes;
|
||||||
|
//
|
||||||
|
// labelCaching_CacheAge
|
||||||
|
//
|
||||||
|
this.labelCaching_CacheAge.AutoSize = true;
|
||||||
|
this.labelCaching_CacheAge.Location = new System.Drawing.Point(6, 19);
|
||||||
|
this.labelCaching_CacheAge.Name = "labelCaching_CacheAge";
|
||||||
|
this.labelCaching_CacheAge.Size = new System.Drawing.Size(121, 13);
|
||||||
|
this.labelCaching_CacheAge.TabIndex = 0;
|
||||||
|
this.labelCaching_CacheAge.Text = "Cache Age (In Minutes):";
|
||||||
|
//
|
||||||
|
// buttonSettings_Save
|
||||||
|
//
|
||||||
|
this.buttonSettings_Save.Location = new System.Drawing.Point(295, 241);
|
||||||
|
this.buttonSettings_Save.Margin = new System.Windows.Forms.Padding(10);
|
||||||
|
this.buttonSettings_Save.Name = "buttonSettings_Save";
|
||||||
|
this.buttonSettings_Save.Size = new System.Drawing.Size(75, 23);
|
||||||
|
this.buttonSettings_Save.TabIndex = 3;
|
||||||
|
this.buttonSettings_Save.Text = "Ok";
|
||||||
|
this.buttonSettings_Save.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonSettings_Save.Click += new System.EventHandler(this.buttonSettings_Save_Click);
|
||||||
|
//
|
||||||
|
// buttonSettings_Cancel
|
||||||
|
//
|
||||||
|
this.buttonSettings_Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
this.buttonSettings_Cancel.Location = new System.Drawing.Point(390, 241);
|
||||||
|
this.buttonSettings_Cancel.Margin = new System.Windows.Forms.Padding(10);
|
||||||
|
this.buttonSettings_Cancel.Name = "buttonSettings_Cancel";
|
||||||
|
this.buttonSettings_Cancel.Size = new System.Drawing.Size(75, 23);
|
||||||
|
this.buttonSettings_Cancel.TabIndex = 4;
|
||||||
|
this.buttonSettings_Cancel.Text = "Cancel";
|
||||||
|
this.buttonSettings_Cancel.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonSettings_Cancel.Click += new System.EventHandler(this.buttonSettings_Cancel_Click);
|
||||||
|
//
|
||||||
|
// Form_Settings
|
||||||
|
//
|
||||||
|
this.AcceptButton = this.buttonSettings_Save;
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||||
|
this.AutoSize = true;
|
||||||
|
this.CancelButton = this.buttonSettings_Cancel;
|
||||||
|
this.ClientSize = new System.Drawing.Size(484, 276);
|
||||||
|
this.ControlBox = false;
|
||||||
|
this.Controls.Add(this.buttonSettings_Cancel);
|
||||||
|
this.Controls.Add(this.buttonSettings_Save);
|
||||||
|
this.Controls.Add(this.groupBoxSettings_Caching);
|
||||||
|
this.Controls.Add(this.groupBoxSettings_Update);
|
||||||
|
this.Controls.Add(this.groupBoxSettings_General);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||||
|
this.Name = "Form_Settings";
|
||||||
|
this.ShowIcon = false;
|
||||||
|
this.ShowInTaskbar = false;
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
|
this.Text = "Preferences";
|
||||||
|
this.Load += new System.EventHandler(this.Form_Settings_Load);
|
||||||
|
this.groupBoxSettings_General.ResumeLayout(false);
|
||||||
|
this.groupBoxSettings_General.PerformLayout();
|
||||||
|
this.groupBoxSettings_Update.ResumeLayout(false);
|
||||||
|
this.groupBoxSettings_Update.PerformLayout();
|
||||||
|
this.groupBoxSettings_Caching.ResumeLayout(false);
|
||||||
|
this.groupBoxSettings_Caching.PerformLayout();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.GroupBox groupBoxSettings_General;
|
||||||
|
private System.Windows.Forms.GroupBox groupBoxSettings_Update;
|
||||||
|
private System.Windows.Forms.CheckBox checkBoxSettings_PreserveLayout;
|
||||||
|
private System.Windows.Forms.CheckBox checkBoxSettings_RememberRecentPaths;
|
||||||
|
private System.Windows.Forms.TextBox textBoxSettings_UpdateCheckInterval;
|
||||||
|
private System.Windows.Forms.Label labelUpdate_CheckInterval;
|
||||||
|
private System.Windows.Forms.CheckBox checkBoxSettings_CheckForUpdates;
|
||||||
|
private System.Windows.Forms.GroupBox groupBoxSettings_Caching;
|
||||||
|
private System.Windows.Forms.TextBox textBoxSettings_CacheAge;
|
||||||
|
private System.Windows.Forms.Label labelCaching_CacheAge;
|
||||||
|
private System.Windows.Forms.Button buttonSettings_Save;
|
||||||
|
private System.Windows.Forms.Button buttonSettings_Cancel;
|
||||||
|
private System.Windows.Forms.Label labelUpdate_LastUpdateCheck;
|
||||||
|
private System.Windows.Forms.CheckBox checkBoxSettings_RememberEnumOptions;
|
||||||
|
}
|
||||||
|
}
|
||||||
58
WmiExplorer/Forms/Form_Settings.cs
Normal file
58
WmiExplorer/Forms/Form_Settings.cs
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using WmiExplorer.Properties;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Forms
|
||||||
|
{
|
||||||
|
public partial class Form_Settings : Form
|
||||||
|
{
|
||||||
|
private readonly string _currentCacheAge;
|
||||||
|
|
||||||
|
public Form_Settings()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
_currentCacheAge = textBoxSettings_CacheAge.Text;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonSettings_Save_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
bool restartRequired = false;
|
||||||
|
|
||||||
|
if (Settings.Default.CacheAgeInMinutes != _currentCacheAge)
|
||||||
|
{
|
||||||
|
if (MessageBox.Show(
|
||||||
|
"New Cache Age will take effect after restarting WMI Explorer.\n\n" +
|
||||||
|
"Would you like to restart WMI Explorer now ?",
|
||||||
|
"WMI Explorer - Restart Required",
|
||||||
|
MessageBoxButtons.YesNo,
|
||||||
|
MessageBoxIcon.Question
|
||||||
|
) == DialogResult.Yes)
|
||||||
|
{
|
||||||
|
restartRequired = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Settings.Default.Save();
|
||||||
|
|
||||||
|
if (restartRequired)
|
||||||
|
{
|
||||||
|
Process.Start(Application.ExecutablePath);
|
||||||
|
Application.Exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonSettings_Cancel_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Form_Settings_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
labelUpdate_LastUpdateCheck.Text += Settings.Default.LastUpdateCheck.ToString(CultureInfo.InvariantCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
120
WmiExplorer/Forms/Form_Settings.resx
Normal file
120
WmiExplorer/Forms/Form_Settings.resx
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
89
WmiExplorer/Forms/Form_ShowMof.Designer.cs
generated
Normal file
89
WmiExplorer/Forms/Form_ShowMof.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,89 @@
|
||||||
|
namespace WmiExplorer
|
||||||
|
{
|
||||||
|
sealed partial class Form_ShowMof
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.textBoxShowMOF = new System.Windows.Forms.TextBox();
|
||||||
|
this.buttonCloseMof = new System.Windows.Forms.Button();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// textBoxShowMOF
|
||||||
|
//
|
||||||
|
this.textBoxShowMOF.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.textBoxShowMOF.BackColor = System.Drawing.SystemColors.Control;
|
||||||
|
this.textBoxShowMOF.ImeMode = System.Windows.Forms.ImeMode.Off;
|
||||||
|
this.textBoxShowMOF.Location = new System.Drawing.Point(12, 13);
|
||||||
|
this.textBoxShowMOF.Multiline = true;
|
||||||
|
this.textBoxShowMOF.Name = "textBoxShowMOF";
|
||||||
|
this.textBoxShowMOF.ReadOnly = true;
|
||||||
|
this.textBoxShowMOF.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||||
|
this.textBoxShowMOF.Size = new System.Drawing.Size(510, 253);
|
||||||
|
this.textBoxShowMOF.TabIndex = 0;
|
||||||
|
this.textBoxShowMOF.TabStop = false;
|
||||||
|
this.textBoxShowMOF.WordWrap = false;
|
||||||
|
//
|
||||||
|
// buttonCloseMof
|
||||||
|
//
|
||||||
|
this.buttonCloseMof.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
|
||||||
|
this.buttonCloseMof.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
this.buttonCloseMof.Location = new System.Drawing.Point(227, 274);
|
||||||
|
this.buttonCloseMof.Name = "buttonCloseMof";
|
||||||
|
this.buttonCloseMof.Size = new System.Drawing.Size(75, 25);
|
||||||
|
this.buttonCloseMof.TabIndex = 1;
|
||||||
|
this.buttonCloseMof.Text = "Close";
|
||||||
|
this.buttonCloseMof.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonCloseMof.Click += new System.EventHandler(this.buttonCloseMOF_Click);
|
||||||
|
//
|
||||||
|
// Form_ShowMof
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||||
|
this.BackColor = System.Drawing.SystemColors.Control;
|
||||||
|
this.CancelButton = this.buttonCloseMof;
|
||||||
|
this.ClientSize = new System.Drawing.Size(534, 311);
|
||||||
|
this.Controls.Add(this.buttonCloseMof);
|
||||||
|
this.Controls.Add(this.textBoxShowMOF);
|
||||||
|
this.Name = "Form_ShowMof";
|
||||||
|
this.ShowIcon = false;
|
||||||
|
this.ShowInTaskbar = false;
|
||||||
|
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
|
this.Text = "MOF";
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.TextBox textBoxShowMOF;
|
||||||
|
private System.Windows.Forms.Button buttonCloseMof;
|
||||||
|
}
|
||||||
|
}
|
||||||
26
WmiExplorer/Forms/Form_ShowMof.cs
Normal file
26
WmiExplorer/Forms/Form_ShowMof.cs
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace WmiExplorer
|
||||||
|
{
|
||||||
|
|
||||||
|
public sealed partial class Form_ShowMof : Form
|
||||||
|
{
|
||||||
|
public Form_ShowMof(string mofText)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
textBoxShowMOF.Text = "\r\n" + mofText;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonCloseMOF_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
120
WmiExplorer/Forms/Form_ShowMof.resx
Normal file
120
WmiExplorer/Forms/Form_ShowMof.resx
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
87
WmiExplorer/Forms/Form_Update.Designer.cs
generated
Normal file
87
WmiExplorer/Forms/Form_Update.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
namespace WmiExplorer.Forms
|
||||||
|
{
|
||||||
|
partial class Form_Update
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.richTextBoxUpdate = new System.Windows.Forms.RichTextBox();
|
||||||
|
this.buttonCancelHidden = new System.Windows.Forms.Button();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// richTextBoxUpdate
|
||||||
|
//
|
||||||
|
this.richTextBoxUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.richTextBoxUpdate.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
|
this.richTextBoxUpdate.Cursor = System.Windows.Forms.Cursors.IBeam;
|
||||||
|
this.richTextBoxUpdate.Location = new System.Drawing.Point(12, 12);
|
||||||
|
this.richTextBoxUpdate.Name = "richTextBoxUpdate";
|
||||||
|
this.richTextBoxUpdate.ReadOnly = true;
|
||||||
|
this.richTextBoxUpdate.Size = new System.Drawing.Size(471, 156);
|
||||||
|
this.richTextBoxUpdate.TabIndex = 0;
|
||||||
|
this.richTextBoxUpdate.Text = "";
|
||||||
|
this.richTextBoxUpdate.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.richTextBoxUpdate_LinkClicked);
|
||||||
|
//
|
||||||
|
// buttonCancelHidden
|
||||||
|
//
|
||||||
|
this.buttonCancelHidden.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
|
||||||
|
this.buttonCancelHidden.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
this.buttonCancelHidden.Location = new System.Drawing.Point(193, 174);
|
||||||
|
this.buttonCancelHidden.Name = "buttonCancelHidden";
|
||||||
|
this.buttonCancelHidden.Size = new System.Drawing.Size(100, 25);
|
||||||
|
this.buttonCancelHidden.TabIndex = 1;
|
||||||
|
this.buttonCancelHidden.Text = "OK";
|
||||||
|
this.buttonCancelHidden.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonCancelHidden.Click += new System.EventHandler(this.button1_Click);
|
||||||
|
//
|
||||||
|
// Form_Update
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||||
|
this.AutoSize = true;
|
||||||
|
this.CancelButton = this.buttonCancelHidden;
|
||||||
|
this.ClientSize = new System.Drawing.Size(484, 211);
|
||||||
|
this.Controls.Add(this.richTextBoxUpdate);
|
||||||
|
this.Controls.Add(this.buttonCancelHidden);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||||
|
this.MaximizeBox = false;
|
||||||
|
this.MinimizeBox = false;
|
||||||
|
this.Name = "Form_Update";
|
||||||
|
this.ShowInTaskbar = false;
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
|
this.Text = "WMI Explorer Update";
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.RichTextBox richTextBoxUpdate;
|
||||||
|
private System.Windows.Forms.Button buttonCancelHidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
43
WmiExplorer/Forms/Form_Update.cs
Normal file
43
WmiExplorer/Forms/Form_Update.cs
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using WmiExplorer.Properties;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Forms
|
||||||
|
{
|
||||||
|
public partial class Form_Update : Form
|
||||||
|
{
|
||||||
|
public Form_Update(bool bUpdateAvailable, string changelog)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
if (bUpdateAvailable)
|
||||||
|
{
|
||||||
|
Font font = new Font("Arial", 10, FontStyle.Bold);
|
||||||
|
richTextBoxUpdate.SelectionFont = font;
|
||||||
|
richTextBoxUpdate.AppendText("A new version of WMI Explorer is available!\n");
|
||||||
|
richTextBoxUpdate.AppendText(Settings.Default.UpdateUrl + "\n\n");
|
||||||
|
richTextBoxUpdate.AppendText(changelog);
|
||||||
|
richTextBoxUpdate.SelectionStart = 0;
|
||||||
|
richTextBoxUpdate.ScrollToCaret();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Width = 400;
|
||||||
|
Height = 200;
|
||||||
|
richTextBoxUpdate.AppendText("You are running the latest version!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void button1_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void richTextBoxUpdate_LinkClicked(object sender, LinkClickedEventArgs e)
|
||||||
|
{
|
||||||
|
Process.Start(e.LinkText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
120
WmiExplorer/Forms/Form_Update.resx
Normal file
120
WmiExplorer/Forms/Form_Update.resx
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
BIN
WmiExplorer/Icons/Database CMYK .ico
Normal file
BIN
WmiExplorer/Icons/Database CMYK .ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 345 KiB |
BIN
WmiExplorer/Icons/Icojam-Blue-Bits-Database-search.ico
Normal file
BIN
WmiExplorer/Icons/Icojam-Blue-Bits-Database-search.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 189 KiB |
26
WmiExplorer/Program.cs
Normal file
26
WmiExplorer/Program.cs
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace WmiExplorer
|
||||||
|
{
|
||||||
|
static class Program
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The main entry point for the application.
|
||||||
|
/// </summary>
|
||||||
|
[STAThread]
|
||||||
|
static void Main()
|
||||||
|
{
|
||||||
|
if (Environment.OSVersion.Version.Major >= 6) SetProcessDPIAware();
|
||||||
|
Application.EnableVisualStyles();
|
||||||
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
|
Application.Run(new WmiExplorer());
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Runtime.InteropServices.DllImport("user32.dll")]
|
||||||
|
private static extern bool SetProcessDPIAware();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
36
WmiExplorer/Properties/AssemblyInfo.cs
Normal file
36
WmiExplorer/Properties/AssemblyInfo.cs
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
[assembly: AssemblyTitle("WMI Explorer")]
|
||||||
|
[assembly: AssemblyDescription("WMI Explorer is a utility intended to provide the ability to browse and view WMI objects in a single pane of view.")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("WMI Explorer")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2014 by Vinay Pamnani")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
|
// to COM components. If you need to access a type in this assembly from
|
||||||
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
|
[assembly: Guid("0186a05f-638a-4422-9992-412b499e60e4")]
|
||||||
|
|
||||||
|
// Version information for an assembly consists of the following four values:
|
||||||
|
//
|
||||||
|
// Major Version
|
||||||
|
// Minor Version
|
||||||
|
// Build Number
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
// by using the '*' as shown below:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("2.0.0.2")]
|
||||||
|
[assembly: AssemblyFileVersion("2.0.0.2")]
|
||||||
63
WmiExplorer/Properties/Resources.Designer.cs
generated
Normal file
63
WmiExplorer/Properties/Resources.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Runtime Version:4.0.30319.34014
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace WmiExplorer.Properties {
|
||||||
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
/// </summary>
|
||||||
|
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||||
|
// class via a tool like ResGen or Visual Studio.
|
||||||
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
|
// with the /str option, or rebuild your VS project.
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class Resources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal Resources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the cached ResourceManager instance used by this class.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
|
get {
|
||||||
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WmiExplorer.Properties.Resources", typeof(Resources).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Overrides the current thread's CurrentUICulture property for all
|
||||||
|
/// resource lookups using this strongly typed resource class.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
|
get {
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
120
WmiExplorer/Properties/Resources.resx
Normal file
120
WmiExplorer/Properties/Resources.resx
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
260
WmiExplorer/Properties/Settings.Designer.cs
generated
Normal file
260
WmiExplorer/Properties/Settings.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,260 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Runtime Version:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace WmiExplorer.Properties {
|
||||||
|
|
||||||
|
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
|
||||||
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||||
|
|
||||||
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
|
|
||||||
|
public static Settings Default {
|
||||||
|
get {
|
||||||
|
return defaultInstance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||||
|
public bool bCheckForUpdates {
|
||||||
|
get {
|
||||||
|
return ((bool)(this["bCheckForUpdates"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["bCheckForUpdates"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||||
|
public bool bPreserveLayout {
|
||||||
|
get {
|
||||||
|
return ((bool)(this["bPreserveLayout"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["bPreserveLayout"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||||
|
public bool bRememberEnumOptions {
|
||||||
|
get {
|
||||||
|
return ((bool)(this["bRememberEnumOptions"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["bRememberEnumOptions"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||||
|
public bool bRememberRecentPaths {
|
||||||
|
get {
|
||||||
|
return ((bool)(this["bRememberRecentPaths"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["bRememberRecentPaths"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||||
|
public bool bUpdateAvailable {
|
||||||
|
get {
|
||||||
|
return ((bool)(this["bUpdateAvailable"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["bUpdateAvailable"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||||
|
public bool bUpgradeSettings {
|
||||||
|
get {
|
||||||
|
return ((bool)(this["bUpgradeSettings"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["bUpgradeSettings"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("60")]
|
||||||
|
public string CacheAgeInMinutes {
|
||||||
|
get {
|
||||||
|
return ((string)(this["CacheAgeInMinutes"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["CacheAgeInMinutes"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("None")]
|
||||||
|
public global::WmiExplorer.Classes.EnumOptions EnumOptionsFlags {
|
||||||
|
get {
|
||||||
|
return ((global::WmiExplorer.Classes.EnumOptions)(this["EnumOptionsFlags"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["EnumOptionsFlags"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("1970-01-01")]
|
||||||
|
public global::System.DateTime LastUpdateCheck {
|
||||||
|
get {
|
||||||
|
return ((global::System.DateTime)(this["LastUpdateCheck"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["LastUpdateCheck"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
public global::System.Collections.Specialized.StringCollection RecentPaths {
|
||||||
|
get {
|
||||||
|
return ((global::System.Collections.Specialized.StringCollection)(this["RecentPaths"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["RecentPaths"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("220")]
|
||||||
|
public int SplitterDistanceNamespaces {
|
||||||
|
get {
|
||||||
|
return ((int)(this["SplitterDistanceNamespaces"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["SplitterDistanceNamespaces"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("200")]
|
||||||
|
public int SplitterDistanceClasses {
|
||||||
|
get {
|
||||||
|
return ((int)(this["SplitterDistanceClasses"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["SplitterDistanceClasses"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("180")]
|
||||||
|
public int SplitterDistanceInstances {
|
||||||
|
get {
|
||||||
|
return ((int)(this["SplitterDistanceInstances"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["SplitterDistanceInstances"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("7")]
|
||||||
|
public string UpdateCheckIntervalInDays {
|
||||||
|
get {
|
||||||
|
return ((string)(this["UpdateCheckIntervalInDays"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["UpdateCheckIntervalInDays"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("https://raw.githubusercontent.com/vinaypamnani/wmie2/master/WmiExplorer/releases." +
|
||||||
|
"xml")]
|
||||||
|
public string UpdateCheckUrl {
|
||||||
|
get {
|
||||||
|
return ((string)(this["UpdateCheckUrl"]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("http://wmie.azurewebsites.net/releases.xml")]
|
||||||
|
public string UpdateCheckUrlBackup {
|
||||||
|
get {
|
||||||
|
return ((string)(this["UpdateCheckUrlBackup"]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("https://github.com/vinaypamnani/wmie2/releases")]
|
||||||
|
public string UpdateUrl {
|
||||||
|
get {
|
||||||
|
return ((string)(this["UpdateUrl"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["UpdateUrl"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||||
|
public string WindowPlacement {
|
||||||
|
get {
|
||||||
|
return ((string)(this["WindowPlacement"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["WindowPlacement"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||||
|
public bool bEnumModeAsync {
|
||||||
|
get {
|
||||||
|
return ((bool)(this["bEnumModeAsync"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["bEnumModeAsync"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||||
|
public bool bSmsMode {
|
||||||
|
get {
|
||||||
|
return ((bool)(this["bSmsMode"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["bSmsMode"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
66
WmiExplorer/Properties/Settings.settings
Normal file
66
WmiExplorer/Properties/Settings.settings
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="WmiExplorer.Properties" GeneratedClassName="Settings">
|
||||||
|
<Profiles />
|
||||||
|
<Settings>
|
||||||
|
<Setting Name="bCheckForUpdates" Type="System.Boolean" Scope="User">
|
||||||
|
<Value Profile="(Default)">False</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="bPreserveLayout" Type="System.Boolean" Scope="User">
|
||||||
|
<Value Profile="(Default)">True</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="bRememberEnumOptions" Type="System.Boolean" Scope="User">
|
||||||
|
<Value Profile="(Default)">True</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="bRememberRecentPaths" Type="System.Boolean" Scope="User">
|
||||||
|
<Value Profile="(Default)">True</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="bUpdateAvailable" Type="System.Boolean" Scope="User">
|
||||||
|
<Value Profile="(Default)">False</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="bUpgradeSettings" Type="System.Boolean" Scope="User">
|
||||||
|
<Value Profile="(Default)">True</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="CacheAgeInMinutes" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)">60</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="EnumOptionsFlags" Type="WmiExplorer.Classes.EnumOptions" Scope="User">
|
||||||
|
<Value Profile="(Default)">None</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="LastUpdateCheck" Type="System.DateTime" Scope="User">
|
||||||
|
<Value Profile="(Default)">1970-01-01</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="RecentPaths" Type="System.Collections.Specialized.StringCollection" Scope="User">
|
||||||
|
<Value Profile="(Default)" />
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="SplitterDistanceNamespaces" Type="System.Int32" Scope="User">
|
||||||
|
<Value Profile="(Default)">220</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="SplitterDistanceClasses" Type="System.Int32" Scope="User">
|
||||||
|
<Value Profile="(Default)">200</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="SplitterDistanceInstances" Type="System.Int32" Scope="User">
|
||||||
|
<Value Profile="(Default)">180</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="UpdateCheckIntervalInDays" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)">7</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="UpdateCheckUrl" Type="System.String" Scope="Application">
|
||||||
|
<Value Profile="(Default)">https://raw.githubusercontent.com/vinaypamnani/wmie2/master/WmiExplorer/releases.xml</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="UpdateCheckUrlBackup" Type="System.String" Scope="Application">
|
||||||
|
<Value Profile="(Default)">http://wmie.azurewebsites.net/releases.xml</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="UpdateUrl" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)">https://github.com/vinaypamnani/wmie2/releases</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="WindowPlacement" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)" />
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="bEnumModeAsync" Type="System.Boolean" Scope="User">
|
||||||
|
<Value Profile="(Default)">True</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="bSmsMode" Type="System.Boolean" Scope="User">
|
||||||
|
<Value Profile="(Default)">True</Value>
|
||||||
|
</Setting>
|
||||||
|
</Settings>
|
||||||
|
</SettingsFile>
|
||||||
69
WmiExplorer/Sms/SmsClient.cs
Normal file
69
WmiExplorer/Sms/SmsClient.cs
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
using System.Linq;
|
||||||
|
using System.Management;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Sms
|
||||||
|
{
|
||||||
|
public class SmsClient
|
||||||
|
{
|
||||||
|
public SmsClient(string clientNamespacePath, ConnectionOptions connection)
|
||||||
|
{
|
||||||
|
ClientNamespacePath = clientNamespacePath;
|
||||||
|
SmsClientClassPath = clientNamespacePath + ":SMS_Client";
|
||||||
|
Connection = connection;
|
||||||
|
IsClientInstalled = IsInstalled();
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ClientNamespacePath { get; set; }
|
||||||
|
|
||||||
|
public ConnectionOptions Connection { get; set; }
|
||||||
|
|
||||||
|
public bool IsClientInstalled { get; set; }
|
||||||
|
|
||||||
|
public bool IsConnected { get; set; }
|
||||||
|
|
||||||
|
public ManagementClass SmsClientClass { get; set; }
|
||||||
|
|
||||||
|
public string SmsClientClassPath { get; set; }
|
||||||
|
|
||||||
|
public bool IsInstalled()
|
||||||
|
{
|
||||||
|
const string queryString = "SELECT * FROM meta_class WHERE __Class = 'SMS_Client'";
|
||||||
|
|
||||||
|
ManagementScope scope = new ManagementScope(ClientNamespacePath, Connection);
|
||||||
|
ObjectQuery query = new ObjectQuery(queryString);
|
||||||
|
EnumerationOptions eOption = new EnumerationOptions();
|
||||||
|
ManagementObjectSearcher queryClientSearcher = new ManagementObjectSearcher(scope, query, eOption);
|
||||||
|
|
||||||
|
ManagementObject ccmClient = (from ManagementClass mClass in queryClientSearcher.Get()
|
||||||
|
orderby mClass.Path.ClassName
|
||||||
|
select mClass).FirstOrDefault();
|
||||||
|
|
||||||
|
return ccmClient != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
//public void InitiateClientAction(SmsClientAction smsClientAction)
|
||||||
|
//{
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// ManagementBaseObject inParams = SmsClientClass.GetMethodParameters("TriggerSchedule");
|
||||||
|
// inParams["sScheduleId"] = smsClientAction.Id;
|
||||||
|
// ManagementBaseObject outParams = SmsClientClass.InvokeMethod("TriggerSchedule", inParams, null);
|
||||||
|
|
||||||
|
// if (outParams != null)
|
||||||
|
// {
|
||||||
|
// MessageBox.Show("Successfully triggered " + smsClientAction.DisplayName + ".",
|
||||||
|
// "Initiate Client Action",
|
||||||
|
// MessageBoxButtons.OK,
|
||||||
|
// MessageBoxIcon.Information);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// catch (Exception ex)
|
||||||
|
// {
|
||||||
|
// MessageBox.Show("Failed to trigger " + smsClientAction.DisplayName + ". Error: " + ex.Message,
|
||||||
|
// "Initiate Client Action",
|
||||||
|
// MessageBoxButtons.OK,
|
||||||
|
// MessageBoxIcon.Error);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
31
WmiExplorer/Sms/SmsClientAction.cs
Normal file
31
WmiExplorer/Sms/SmsClientAction.cs
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
namespace WmiExplorer.Sms
|
||||||
|
{
|
||||||
|
public static class ActionGroup
|
||||||
|
{
|
||||||
|
public static string ApplicationEvaluation = "Application Evaluation";
|
||||||
|
public static string Default = "Default";
|
||||||
|
public static string Endpoint = "Endpoint Protection";
|
||||||
|
public static string Inventory = "Inventory";
|
||||||
|
public static string LocationServices = "Location Services";
|
||||||
|
public static string Other = "Other";
|
||||||
|
public static string Policy = "Policy";
|
||||||
|
public static string SoftwareUpdates = "Software Updates";
|
||||||
|
public static string StateMessage = "State Messages";
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SmsClientAction
|
||||||
|
{
|
||||||
|
public SmsClientAction(string id, string displayName, string group = "Default")
|
||||||
|
{
|
||||||
|
Id = id;
|
||||||
|
DisplayName = displayName;
|
||||||
|
Group = group;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string DisplayName { get; set; }
|
||||||
|
|
||||||
|
public string Group { get; set; }
|
||||||
|
|
||||||
|
public string Id { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
213
WmiExplorer/Sms/SmsClientActions.cs
Normal file
213
WmiExplorer/Sms/SmsClientActions.cs
Normal file
|
|
@ -0,0 +1,213 @@
|
||||||
|
namespace WmiExplorer.Sms
|
||||||
|
{
|
||||||
|
internal class SmsClientActions
|
||||||
|
{
|
||||||
|
public SmsClientActions()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction HardwareInventory
|
||||||
|
{
|
||||||
|
// {00000000-0000-0000-0000-000000000101} is the same
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000001}", "Hardware Inventory Cycle", ActionGroup.Inventory); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction SoftwareInventory
|
||||||
|
{
|
||||||
|
// {00000000-0000-0000-0000-000000000102} is the same
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000002}", "Software Inventory Cycle", ActionGroup.Inventory); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction HeartbeatDiscovery
|
||||||
|
{
|
||||||
|
// {00000000-0000-0000-0000-000000000103} is the same
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000003}", "Discovery Data Collection Cycle", ActionGroup.Inventory); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction FileCollection
|
||||||
|
{
|
||||||
|
// {00000000-0000-0000-0000-000000000104} is the same
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000010}", "File Collection Cycle", ActionGroup.Inventory); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction IdmifCollection
|
||||||
|
{
|
||||||
|
// {00000000-0000-0000-0000-000000000105} is the same
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000011}", "IDMIF Collection Cycle", ActionGroup.Inventory); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction ClientMachineAuthentication
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000012}", "Client Machine Authentication", ActionGroup.Other); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction MachineAssignmentsRequest
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000021}", "Request Machine Assignments", ActionGroup.Policy); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction MachineAssignmentsEvaluate
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000022}", "Evaluate Machine Assignments", ActionGroup.Policy); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction LocationRefreshDefaultMp
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000023}", "Refresh Default MP", ActionGroup.LocationServices); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction LocationRefreshLocations
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000024}", "Refresh Locations", ActionGroup.LocationServices); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction LocationTimeoutRefresh
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000025}", "Timeout Refresh", ActionGroup.LocationServices); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction UserAssignmentsRequest
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000026}", "Request User Assignments", ActionGroup.Policy); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction UserAssignmentsEvaluate
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000027}", "Evaluate User Assignments", ActionGroup.Policy); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction SoftwareMeterUsageReport
|
||||||
|
{
|
||||||
|
// {00000000-0000-0000-0000-000000000106}
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000031}", "Software Metering Usage Report Cycle", ActionGroup.Inventory); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction SourceUpdateCycle
|
||||||
|
{
|
||||||
|
// {00000000-0000-0000-0000-000000000107}
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000032}", "Windows Installer Source List Update Cycle", ActionGroup.Other); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction ProxySettingsCacheClear
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000037}", "Clear Proxy Settings Cache", ActionGroup.Other); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction PolicyAgentCleanupMachine
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000040}", "Policy Agent Cleanup Cycle (Machine)", ActionGroup.Policy); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction PolicyAgentCleanupUser
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000041}", "Policy Agent Cleanup Cycle (User)", ActionGroup.Policy); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction PolicyAgentValidateMachine
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000042}", "Validate Machine Policy/Assignment", ActionGroup.Policy); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction PolicyAgentValidateUser
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000043}", "Validate User Policy/Assignment", ActionGroup.Policy); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction RetryRefreshCertificate
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000051}", "Retry/Refresh Certificates in AD on MP", ActionGroup.Other); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction SoftwareUpdateInstallSchedule
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000063}", "Software Updates Install Schedule", ActionGroup.SoftwareUpdates); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction Nap
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000071}", "Network Access Protection Schedule", ActionGroup.Other); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction SoftwareUpdateAssignmentEvaluation
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000108}", "Software Updates Assignment Evaluation Cycle", ActionGroup.SoftwareUpdates); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction DcmPolicy
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000110}", "DCM Policy", ActionGroup.Other); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction StateMessageSendUnsent
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000111}", "Send Unsent State Messages", ActionGroup.StateMessage); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction StateMessagePolicyCacheClean
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000112}", "State System Policy Cache Clean", ActionGroup.StateMessage); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction SoftwareUpdateScan
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000113}", "Software Update Scan Cycle", ActionGroup.SoftwareUpdates); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction SoftwareUpdateStore
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000114}", "Software Update Store Refresh", ActionGroup.SoftwareUpdates); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction StateMessageSendHigh
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000115}", "Bulk Send High Priority", ActionGroup.StateMessage); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction StateMessageSendLow
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000116}", "Bulk Send Low Priority", ActionGroup.StateMessage); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction AmtStatusCheck
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000120}", "AMT Status Check Policy", ActionGroup.Other); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction ApplicationPolicy
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000121}", "Application Manager Machine Policy", ActionGroup.ApplicationEvaluation); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction ApplicationPolicyUser
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000122}", "Application Manager User Policy", ActionGroup.ApplicationEvaluation); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction ApplicationPolicyGlobal
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000123}", "Application Manager Global Evaluation Policy", ActionGroup.ApplicationEvaluation); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction PowerMgmtSummarize
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000131}", "Power Management Summarizer", ActionGroup.Other); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction EpDeploymentReevaluate
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000221}", "Endpoint Protection Deployment Re-Evaluate", ActionGroup.Endpoint); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SmsClientAction EpAmPolicyReevaluate
|
||||||
|
{
|
||||||
|
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000222}", "Endpoint Protection AM Policy Re-Evaluate", ActionGroup.Endpoint); }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Excluded Actions:
|
||||||
|
// {00000000-0000-0000-0000-000000000061}
|
||||||
|
// {00000000-0000-0000-0000-000000000062}
|
||||||
|
// {00000000-0000-0000-0000-000000000101}
|
||||||
|
// {00000000-0000-0000-0000-000000000109}
|
||||||
|
// {00000000-0000-0000-0000-000000000223}
|
||||||
|
}
|
||||||
|
}
|
||||||
17
WmiExplorer/Updater/Update.cs
Normal file
17
WmiExplorer/Updater/Update.cs
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Updater
|
||||||
|
{
|
||||||
|
internal class Update
|
||||||
|
{
|
||||||
|
public Uri ChangeLogUrl { get; set; }
|
||||||
|
|
||||||
|
public DateTimeOffset LastUpdatedTime { get; set; }
|
||||||
|
|
||||||
|
public ReleaseStatus ReleaseStatus { get; set; }
|
||||||
|
|
||||||
|
public Uri Url { get; set; }
|
||||||
|
|
||||||
|
public Version Version { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
21
WmiExplorer/Updater/UpdateEnums.cs
Normal file
21
WmiExplorer/Updater/UpdateEnums.cs
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Updater
|
||||||
|
{
|
||||||
|
[Flags]
|
||||||
|
public enum ReleaseStatus
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
Stable = 1,
|
||||||
|
Beta = 2,
|
||||||
|
Alpha = 4
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum UpdateFilter
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
Stable = ReleaseStatus.Stable,
|
||||||
|
Beta = Stable | ReleaseStatus.Beta,
|
||||||
|
Alpha = Beta | ReleaseStatus.Alpha
|
||||||
|
}
|
||||||
|
}
|
||||||
93
WmiExplorer/Updater/UpdaterService.cs
Normal file
93
WmiExplorer/Updater/UpdaterService.cs
Normal file
|
|
@ -0,0 +1,93 @@
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.ServiceModel.Syndication;
|
||||||
|
using System.Xml;
|
||||||
|
|
||||||
|
namespace WmiExplorer.Updater
|
||||||
|
{
|
||||||
|
internal class UpdaterService
|
||||||
|
{
|
||||||
|
public static Update GetUpdateFromSyndicationItem(SyndicationItem item)
|
||||||
|
{
|
||||||
|
Debug.Assert(item != null);
|
||||||
|
|
||||||
|
var update = new Update();
|
||||||
|
|
||||||
|
// Update Version
|
||||||
|
Version version;
|
||||||
|
if (Version.TryParse(item.Title.Text, out version))
|
||||||
|
{
|
||||||
|
update.Version = version;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Last Updated Time
|
||||||
|
update.LastUpdatedTime = item.LastUpdatedTime;
|
||||||
|
|
||||||
|
// Update Url
|
||||||
|
var updateLink = item.Links.FirstOrDefault(
|
||||||
|
l => String.IsNullOrWhiteSpace(l.RelationshipType)
|
||||||
|
|| l.RelationshipType.Equals("alternate", StringComparison.OrdinalIgnoreCase));
|
||||||
|
|
||||||
|
if (updateLink != null)
|
||||||
|
{
|
||||||
|
update.Url = updateLink.GetAbsoluteUri();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Change Log Url
|
||||||
|
var changeLogLink = item.Links.FirstOrDefault(
|
||||||
|
l => String.IsNullOrWhiteSpace(l.RelationshipType)
|
||||||
|
|| l.RelationshipType.Equals("related", StringComparison.OrdinalIgnoreCase));
|
||||||
|
|
||||||
|
if (changeLogLink != null)
|
||||||
|
{
|
||||||
|
update.ChangeLogUrl = changeLogLink.GetAbsoluteUri();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update Release Status
|
||||||
|
update.ReleaseStatus
|
||||||
|
= item.Categories.Aggregate(
|
||||||
|
ReleaseStatus.None,
|
||||||
|
(rs, c) =>
|
||||||
|
{
|
||||||
|
ReleaseStatus releaseStatus;
|
||||||
|
|
||||||
|
if (Enum.TryParse<ReleaseStatus>(c.Name, true, out releaseStatus))
|
||||||
|
{
|
||||||
|
rs |= releaseStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rs;
|
||||||
|
});
|
||||||
|
|
||||||
|
return update;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Update CheckForUpdatesAsync(string updateUrl, UpdateFilter updateFilter)
|
||||||
|
{
|
||||||
|
Debug.Assert(!String.IsNullOrWhiteSpace(updateUrl));
|
||||||
|
|
||||||
|
Update latestUpdate = null;
|
||||||
|
|
||||||
|
var formatter = new Atom10FeedFormatter();
|
||||||
|
var reader = XmlReader.Create(updateUrl);
|
||||||
|
formatter.ReadFrom(reader);
|
||||||
|
|
||||||
|
latestUpdate = (from i in formatter.Feed.Items
|
||||||
|
let u = GetUpdateFromSyndicationItem(i)
|
||||||
|
where u.Version > Assembly.GetExecutingAssembly().GetName().Version
|
||||||
|
&& ((int)updateFilter & (int)u.ReleaseStatus) != 0
|
||||||
|
orderby u.LastUpdatedTime descending
|
||||||
|
select u).FirstOrDefault();
|
||||||
|
|
||||||
|
return latestUpdate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetChangeLog(Uri changeLogUrl)
|
||||||
|
{
|
||||||
|
return new WebClient().DownloadString(changeLogUrl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2072
WmiExplorer/WmiExplorer.Designer.cs
generated
Normal file
2072
WmiExplorer/WmiExplorer.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load diff
2769
WmiExplorer/WmiExplorer.Functions.Designer.cs
generated
Normal file
2769
WmiExplorer/WmiExplorer.Functions.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load diff
1623
WmiExplorer/WmiExplorer.cs
Normal file
1623
WmiExplorer/WmiExplorer.cs
Normal file
File diff suppressed because it is too large
Load diff
237
WmiExplorer/WmiExplorer.csproj
Normal file
237
WmiExplorer/WmiExplorer.csproj
Normal file
|
|
@ -0,0 +1,237 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{781647DE-1788-4B7C-9289-D0323FDF562A}</ProjectGuid>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>WmiExplorer</RootNamespace>
|
||||||
|
<AssemblyName>WMIExplorer</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<PublishUrl>publish\</PublishUrl>
|
||||||
|
<Install>true</Install>
|
||||||
|
<InstallFrom>Disk</InstallFrom>
|
||||||
|
<UpdateEnabled>false</UpdateEnabled>
|
||||||
|
<UpdateMode>Foreground</UpdateMode>
|
||||||
|
<UpdateInterval>7</UpdateInterval>
|
||||||
|
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||||
|
<UpdatePeriodically>false</UpdatePeriodically>
|
||||||
|
<UpdateRequired>false</UpdateRequired>
|
||||||
|
<MapFileExtensions>true</MapFileExtensions>
|
||||||
|
<ApplicationRevision>0</ApplicationRevision>
|
||||||
|
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||||
|
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||||
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
|
<SccProjectName>SAK</SccProjectName>
|
||||||
|
<SccLocalPath>SAK</SccLocalPath>
|
||||||
|
<SccAuxPath>SAK</SccAuxPath>
|
||||||
|
<SccProvider>SAK</SccProvider>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<DocumentationFile>
|
||||||
|
</DocumentationFile>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup />
|
||||||
|
<PropertyGroup>
|
||||||
|
<ApplicationIcon>Icons\Icojam-Blue-Bits-Database-search.ico</ApplicationIcon>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Management" />
|
||||||
|
<Reference Include="System.Net" />
|
||||||
|
<Reference Include="System.Runtime.Caching" />
|
||||||
|
<Reference Include="System.ServiceModel" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
|
<Reference Include="System.XML" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Classes\Helpers.cs" />
|
||||||
|
<Compile Include="Classes\Enums.cs" />
|
||||||
|
<Compile Include="Classes\ListViewColumnSorter.cs" />
|
||||||
|
<Compile Include="Classes\ListViewExtensions.cs" />
|
||||||
|
<Compile Include="Classes\ManagementBaseObjectPropertyDescriptor.cs" />
|
||||||
|
<Compile Include="Classes\ManagementBaseObjectW.cs" />
|
||||||
|
<Compile Include="Classes\ManagementBaseObjectWConverter.cs" />
|
||||||
|
<Compile Include="Classes\ManagementObjectW.cs" />
|
||||||
|
<Compile Include="Classes\MouseWheelMessageFilter.cs" />
|
||||||
|
<Compile Include="Classes\NativeMethods.cs" />
|
||||||
|
<Compile Include="Classes\ObserverHandler.cs" />
|
||||||
|
<Compile Include="Classes\ToolStripItemCollectionSorter.cs" />
|
||||||
|
<Compile Include="Classes\Utilities.cs" />
|
||||||
|
<Compile Include="Classes\WindowPlacement.cs" />
|
||||||
|
<Compile Include="Classes\WmiClass.cs" />
|
||||||
|
<Compile Include="Classes\WmiInstance.cs" />
|
||||||
|
<Compile Include="Classes\WmiMethod.cs" />
|
||||||
|
<Compile Include="Classes\WmiNamespace.cs" />
|
||||||
|
<Compile Include="Classes\WmiNode.cs" />
|
||||||
|
<Compile Include="Forms\Form_About.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\Form_About.Designer.cs">
|
||||||
|
<DependentUpon>Form_About.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\Form_ConnectAs.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\Form_ConnectAs.Designer.cs">
|
||||||
|
<DependentUpon>Form_ConnectAs.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\Form_DisplayText.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\Form_DisplayText.Designer.cs">
|
||||||
|
<DependentUpon>Form_DisplayText.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\Form_ExecMethod.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\Form_ExecMethod.Designer.cs">
|
||||||
|
<DependentUpon>Form_ExecMethod.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\Form_Settings.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\Form_Settings.Designer.cs">
|
||||||
|
<DependentUpon>Form_Settings.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\Form_ShowMof.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\Form_ShowMof.designer.cs">
|
||||||
|
<DependentUpon>Form_ShowMof.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\Form_Update.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\Form_Update.Designer.cs">
|
||||||
|
<DependentUpon>Form_Update.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Sms\SmsClient.cs" />
|
||||||
|
<Compile Include="Sms\SmsClientAction.cs" />
|
||||||
|
<Compile Include="Sms\SmsClientActions.cs" />
|
||||||
|
<Compile Include="Updater\Update.cs" />
|
||||||
|
<Compile Include="Updater\UpdateEnums.cs" />
|
||||||
|
<Compile Include="Updater\UpdaterService.cs" />
|
||||||
|
<Compile Include="WmiExplorer.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="WmiExplorer.Designer.cs">
|
||||||
|
<DependentUpon>WmiExplorer.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="WmiExplorer.Functions.Designer.cs">
|
||||||
|
<DependentUpon>WmiExplorer.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<EmbeddedResource Include="Forms\Form_About.resx">
|
||||||
|
<DependentUpon>Form_About.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Forms\Form_ConnectAs.resx">
|
||||||
|
<DependentUpon>Form_ConnectAs.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Forms\Form_DisplayText.resx">
|
||||||
|
<DependentUpon>Form_DisplayText.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Forms\Form_ExecMethod.resx">
|
||||||
|
<DependentUpon>Form_ExecMethod.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Forms\Form_Settings.resx">
|
||||||
|
<DependentUpon>Form_Settings.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Forms\Form_ShowMof.resx">
|
||||||
|
<DependentUpon>Form_ShowMof.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Forms\Form_Update.resx">
|
||||||
|
<DependentUpon>Form_Update.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
</Compile>
|
||||||
|
<EmbeddedResource Include="WmiExplorer.resx">
|
||||||
|
<DependentUpon>WmiExplorer.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<None Include="app.config" />
|
||||||
|
<None Include="Properties\Settings.settings">
|
||||||
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
<Compile Include="Properties\Settings.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
|
||||||
|
<Install>true</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||||
|
<Install>false</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||||
|
<Install>false</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Windows.Installer.4.5">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>Windows Installer 4.5</ProductName>
|
||||||
|
<Install>true</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="ChangeLog.txt">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="Icons\Database CMYK .ico" />
|
||||||
|
<Content Include="Icons\Icojam-Blue-Bits-Database-search.ico" />
|
||||||
|
<Content Include="releases.xml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Content>
|
||||||
|
<Content Include="releases.azure.xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup />
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
||||||
3383
WmiExplorer/WmiExplorer.resx
Normal file
3383
WmiExplorer/WmiExplorer.resx
Normal file
File diff suppressed because it is too large
Load diff
76
WmiExplorer/app.config
Normal file
76
WmiExplorer/app.config
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<configuration>
|
||||||
|
<configSections>
|
||||||
|
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||||
|
<section name="WmiExplorer.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
|
||||||
|
</sectionGroup>
|
||||||
|
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||||
|
<section name="WmiExplorer.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||||
|
</sectionGroup>
|
||||||
|
</configSections>
|
||||||
|
<userSettings>
|
||||||
|
<WmiExplorer.Properties.Settings>
|
||||||
|
<setting name="bCheckForUpdates" serializeAs="String">
|
||||||
|
<value>False</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="bPreserveLayout" serializeAs="String">
|
||||||
|
<value>True</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="bRememberEnumOptions" serializeAs="String">
|
||||||
|
<value>True</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="bRememberRecentPaths" serializeAs="String">
|
||||||
|
<value>True</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="bUpdateAvailable" serializeAs="String">
|
||||||
|
<value>False</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="bUpgradeSettings" serializeAs="String">
|
||||||
|
<value>True</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="CacheAgeInMinutes" serializeAs="String">
|
||||||
|
<value>60</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="EnumOptionsFlags" serializeAs="String">
|
||||||
|
<value>None</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="LastUpdateCheck" serializeAs="String">
|
||||||
|
<value>1970-01-01</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="SplitterDistanceNamespaces" serializeAs="String">
|
||||||
|
<value>220</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="SplitterDistanceClasses" serializeAs="String">
|
||||||
|
<value>200</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="SplitterDistanceInstances" serializeAs="String">
|
||||||
|
<value>180</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="UpdateCheckIntervalInDays" serializeAs="String">
|
||||||
|
<value>7</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="UpdateUrl" serializeAs="String">
|
||||||
|
<value>https://github.com/vinaypamnani/wmie2/releases</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="WindowPlacement" serializeAs="String">
|
||||||
|
<value />
|
||||||
|
</setting>
|
||||||
|
<setting name="bEnumModeAsync" serializeAs="String">
|
||||||
|
<value>True</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="bSmsMode" serializeAs="String">
|
||||||
|
<value>True</value>
|
||||||
|
</setting>
|
||||||
|
</WmiExplorer.Properties.Settings>
|
||||||
|
</userSettings>
|
||||||
|
<applicationSettings>
|
||||||
|
<WmiExplorer.Properties.Settings>
|
||||||
|
<setting name="UpdateCheckUrl" serializeAs="String">
|
||||||
|
<value>https://raw.githubusercontent.com/vinaypamnani/wmie2/master/WmiExplorer/releases.xml</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="UpdateCheckUrlBackup" serializeAs="String">
|
||||||
|
<value>http://wmie.azurewebsites.net/releases.xml</value>
|
||||||
|
</setting>
|
||||||
|
</WmiExplorer.Properties.Settings>
|
||||||
|
</applicationSettings>
|
||||||
|
</configuration>
|
||||||
17
WmiExplorer/releases.azure.xml
Normal file
17
WmiExplorer/releases.azure.xml
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||||
|
<title type="text">WMI Explorer</title>
|
||||||
|
<id>https://github.com/vinaypamnani/wmie2/releases</id>
|
||||||
|
<updated>2017-10-05T00:00:00Z</updated>
|
||||||
|
<author>
|
||||||
|
<name>Vinay Pamnani</name>
|
||||||
|
</author>
|
||||||
|
<entry>
|
||||||
|
<id>https://github.com/vinaypamnani/wmie2/releases</id>
|
||||||
|
<title type="text">2.0.0.2</title>
|
||||||
|
<updated>2017-10-05T00:00:00Z</updated>
|
||||||
|
<link rel="alternate" href="https://github.com/vinaypamnani/wmie2/releases" />
|
||||||
|
<link rel="related" href="http://wmie.azurewebsites.net/changelog.txt" />
|
||||||
|
<category term="Stable" />
|
||||||
|
</entry>
|
||||||
|
</feed>
|
||||||
17
WmiExplorer/releases.xml
Normal file
17
WmiExplorer/releases.xml
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||||
|
<title type="text">WMI Explorer</title>
|
||||||
|
<id>https://github.com/vinaypamnani/wmie2/releases</id>
|
||||||
|
<updated>2017-10-05T00:00:00Z</updated>
|
||||||
|
<author>
|
||||||
|
<name>Vinay Pamnani</name>
|
||||||
|
</author>
|
||||||
|
<entry>
|
||||||
|
<id>https://github.com/vinaypamnani/wmie2/releases</id>
|
||||||
|
<title type="text">2.0.0.2</title>
|
||||||
|
<updated>2017-10-05T00:00:00Z</updated>
|
||||||
|
<link rel="alternate" href="https://github.com/vinaypamnani/wmie2/releases" />
|
||||||
|
<link rel="related" href="https://raw.githubusercontent.com/vinaypamnani/wmie2/master/WmiExplorer/ChangeLog.txt" />
|
||||||
|
<category term="Stable" />
|
||||||
|
</entry>
|
||||||
|
</feed>
|
||||||
Loading…
Reference in a new issue