Add project files with updated auto-update references.

This commit is contained in:
Vinay Pamnani 2017-10-05 18:26:07 -04:00
commit f304845029
66 changed files with 16706 additions and 0 deletions

63
.gitattributes vendored Normal file
View 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
View 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
View 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
View 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.

View 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;
}
}

View 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;
}
}
}

View 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;
}
}
}
}

View 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

View 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;
}
}
}

View 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;
}
}
}

View 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);
}
}
}

View 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)
{
}
}
}

View 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;
}
}
}

View 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);
}
}

View 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);
}
}
}
}

View 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);
}
}
}

View 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);
}
}
}
}

View 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.
}
}
}
}

View 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>();
}
}
}

View 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");
}
}
}

View 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; }
}
}
}

View 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>();
}
}
}

View 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
View 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;
}
}

View 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
}
}

View 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>

View 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;
}
}

View 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();
}
}
}

View 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>

View 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;
}
}

View 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();
}
}
}

View 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>

View 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;
}
}

View 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;
}
}
}
}

View 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>

View 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;
}
}

View 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);
}
}
}

View 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>

View 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;
}
}

View 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();
}
}
}

View 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>

View 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;
}
}

View 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);
}
}
}

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

26
WmiExplorer/Program.cs Normal file
View 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();
}
}

View 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")]

View 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;
}
}
}
}

View 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>

View 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;
}
}
}
}

View 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>

View 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);
// }
//}
}
}

View 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; }
}
}

View 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}
}
}

View 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; }
}
}

View 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
}
}

View 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

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

1623
WmiExplorer/WmiExplorer.cs Normal file

File diff suppressed because it is too large Load diff

View 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

File diff suppressed because it is too large Load diff

76
WmiExplorer/app.config Normal file
View 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>

View 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
View 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>