mirror of
https://github.com/vinaypamnani/wmie2.git
synced 2025-12-06 04:12:02 +01:00
Add project files with updated auto-update references.
This commit is contained in:
commit
f304845029
63
.gitattributes
vendored
Normal file
63
.gitattributes
vendored
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
###############################################################################
|
||||
# Set default behavior to automatically normalize line endings.
|
||||
###############################################################################
|
||||
* text=auto
|
||||
|
||||
###############################################################################
|
||||
# Set default behavior for command prompt diff.
|
||||
#
|
||||
# This is need for earlier builds of msysgit that does not have it on by
|
||||
# default for csharp files.
|
||||
# Note: This is only used by command line
|
||||
###############################################################################
|
||||
#*.cs diff=csharp
|
||||
|
||||
###############################################################################
|
||||
# Set the merge driver for project and solution files
|
||||
#
|
||||
# Merging from the command prompt will add diff markers to the files if there
|
||||
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||
# the diff markers are never inserted). Diff markers may cause the following
|
||||
# file extensions to fail to load in VS. An alternative would be to treat
|
||||
# these files as binary and thus will always conflict and require user
|
||||
# intervention with every merge. To do so, just uncomment the entries below
|
||||
###############################################################################
|
||||
#*.sln merge=binary
|
||||
#*.csproj merge=binary
|
||||
#*.vbproj merge=binary
|
||||
#*.vcxproj merge=binary
|
||||
#*.vcproj merge=binary
|
||||
#*.dbproj merge=binary
|
||||
#*.fsproj merge=binary
|
||||
#*.lsproj merge=binary
|
||||
#*.wixproj merge=binary
|
||||
#*.modelproj merge=binary
|
||||
#*.sqlproj merge=binary
|
||||
#*.wwaproj merge=binary
|
||||
|
||||
###############################################################################
|
||||
# behavior for image files
|
||||
#
|
||||
# image files are treated as binary by default.
|
||||
###############################################################################
|
||||
#*.jpg binary
|
||||
#*.png binary
|
||||
#*.gif binary
|
||||
|
||||
###############################################################################
|
||||
# diff behavior for common document formats
|
||||
#
|
||||
# Convert binary document formats to text before diffing them. This feature
|
||||
# is only available from the command line. Turn it on by uncommenting the
|
||||
# entries below.
|
||||
###############################################################################
|
||||
#*.doc diff=astextplain
|
||||
#*.DOC diff=astextplain
|
||||
#*.docx diff=astextplain
|
||||
#*.DOCX diff=astextplain
|
||||
#*.dot diff=astextplain
|
||||
#*.DOT diff=astextplain
|
||||
#*.pdf diff=astextplain
|
||||
#*.PDF diff=astextplain
|
||||
#*.rtf diff=astextplain
|
||||
#*.RTF diff=astextplain
|
||||
245
.gitignore
vendored
Normal file
245
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,245 @@
|
|||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
|
||||
# User-specific files
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
[Xx]64/
|
||||
[Xx]86/
|
||||
[Bb]uild/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
|
||||
# Visual Studio 2015 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUNIT
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# DNX
|
||||
project.lock.json
|
||||
artifacts/
|
||||
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_i.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# JustCode is a .NET coding add-in
|
||||
.JustCode
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
|
||||
# TODO: Un-comment the next line if you do not want to checkin
|
||||
# your web deploy settings because they may include unencrypted
|
||||
# passwords
|
||||
#*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/packages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/packages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/packages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignoreable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Microsoft Azure ApplicationInsights config file
|
||||
ApplicationInsights.config
|
||||
|
||||
# Windows Store app package directory
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
[Ss]tyle[Cc]op.*
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
node_modules/
|
||||
orleans.codegen.cs
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# LightSwitch generated files
|
||||
GeneratedArtifacts/
|
||||
ModelManifest.xml
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
24
WmiExplorer.sln
Normal file
24
WmiExplorer.sln
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2013
|
||||
VisualStudioVersion = 12.0.30723.0
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WmiExplorer", "WmiExplorer\WmiExplorer.csproj", "{781647DE-1788-4B7C-9289-D0323FDF562A}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B9BD9632-8046-4414-B261-35222239F891}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{781647DE-1788-4B7C-9289-D0323FDF562A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{781647DE-1788-4B7C-9289-D0323FDF562A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{781647DE-1788-4B7C-9289-D0323FDF562A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{781647DE-1788-4B7C-9289-D0323FDF562A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
30
WmiExplorer/ChangeLog.txt
Normal file
30
WmiExplorer/ChangeLog.txt
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
Version 2.0.0.2 [10-05-2017]
|
||||
|
||||
* Migration to GitHub.
|
||||
|
||||
Version 2.0.0.0 [10-27-2014]
|
||||
|
||||
* New: Asynchronous mode for enumeration of classes and instances in the background.
|
||||
* New: Method execution.
|
||||
* New: SMS (System Center Configuration Manager) Mode.
|
||||
* New: Property tab showing properties of selected class.
|
||||
* New: Input & Output parameter information in Methods tab with Help information.
|
||||
* New: List View output mode for Query Results.
|
||||
* New: Update Notifications when a new version of WMI Explorer is available.
|
||||
* New: Connect to multiple computers at the same time.
|
||||
* New: Quick Filter for Classes and Instances.
|
||||
* New: User Preferences.
|
||||
* New: View WMI Provider Process Information.
|
||||
* Improved: UI display on higher scaling levels and resolution.
|
||||
* Improved: Connect As option to provide alternate credentials.
|
||||
* Improved: Display of embedded object names in Property Grid.
|
||||
|
||||
|
||||
Version 1.0.0.8 [01-07-2014]
|
||||
|
||||
* BugFix: Fixed a crash that occurs due to use of incorrectly displayed right-click context menu when no items are selected in Class/Instance list view.
|
||||
|
||||
|
||||
Version 1.0.0.7 [01-07-2014]
|
||||
|
||||
* Initial Release.
|
||||
43
WmiExplorer/Classes/Enums.cs
Normal file
43
WmiExplorer/Classes/Enums.cs
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
public enum MessageCategory
|
||||
{
|
||||
Unknown,
|
||||
Info,
|
||||
Action,
|
||||
Warn,
|
||||
Error,
|
||||
Cache,
|
||||
Sms,
|
||||
None,
|
||||
}
|
||||
|
||||
[Flags]
|
||||
public enum EnumOptions
|
||||
{
|
||||
None = 0,
|
||||
IncludeSystem = 1,
|
||||
IncludeCim = 2,
|
||||
IncludePerf = 4,
|
||||
IncludeMsft = 8,
|
||||
ShowNullInstanceValues = 16,
|
||||
ShowSystemProperties = 32,
|
||||
ExcludeSmsCollections = 64,
|
||||
ExcludeSmsInventory = 128
|
||||
}
|
||||
|
||||
public static class ColorCategory
|
||||
{
|
||||
public static Color Unknown = Color.Gold;
|
||||
public static Color Info = Color.YellowGreen;
|
||||
public static Color Action = Color.Khaki;
|
||||
public static Color Warn = Color.Yellow;
|
||||
public static Color Error = Color.Red;
|
||||
public static Color Cache = Color.LightGreen;
|
||||
public static Color Sms = Color.LightSkyBlue;
|
||||
public static Color None = Color.Empty;
|
||||
}
|
||||
}
|
||||
58
WmiExplorer/Classes/Helpers.cs
Normal file
58
WmiExplorer/Classes/Helpers.cs
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
using System.Drawing;
|
||||
using System.Management;
|
||||
using System.Windows.Forms;
|
||||
using WmiExplorer.Sms;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
public static class Helpers
|
||||
{
|
||||
public static Form CenterForm(this Form child, Form parent)
|
||||
{
|
||||
child.StartPosition = FormStartPosition.Manual;
|
||||
child.Location = new Point(parent.Location.X + (parent.Width - child.Width) / 2, parent.Location.Y + (parent.Height - child.Height) / 2);
|
||||
return child;
|
||||
}
|
||||
|
||||
public static TreeNode GetRootNode(this TreeNode treeNode)
|
||||
{
|
||||
var rootNode = treeNode;
|
||||
|
||||
while (rootNode.Parent != null)
|
||||
{
|
||||
rootNode = rootNode.Parent;
|
||||
}
|
||||
|
||||
return rootNode;
|
||||
}
|
||||
|
||||
public static ConnectionOptions GetRootNodeCredentials(TreeNode treeNode)
|
||||
{
|
||||
var rootNode = treeNode.GetRootNode();
|
||||
return ((WmiNode)rootNode.Tag).Connection;
|
||||
}
|
||||
|
||||
public static SmsClient GetSmsClient(TreeNode treeNode)
|
||||
{
|
||||
var rootNode = treeNode;
|
||||
|
||||
while (rootNode.Parent != null)
|
||||
{
|
||||
rootNode = rootNode.Parent;
|
||||
}
|
||||
|
||||
return ((WmiNode)rootNode.Tag).SmsClient;
|
||||
}
|
||||
|
||||
public static bool IsNodeDisconnected(TreeNode treeNode)
|
||||
{
|
||||
WmiNode wmiNode = treeNode.Tag as WmiNode;
|
||||
if (wmiNode != null && wmiNode.IsRootNode && wmiNode.IsConnected == false)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
103
WmiExplorer/Classes/ListViewColumnSorter.cs
Normal file
103
WmiExplorer/Classes/ListViewColumnSorter.cs
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
using System.Collections;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
// How to sort a ListView control by a column in Visual C#
|
||||
// http://support.microsoft.com/kb/319401
|
||||
|
||||
internal class ListViewColumnSorter : IComparer
|
||||
{
|
||||
/// <summary>
|
||||
/// Specifies the column to be sorted
|
||||
/// </summary>
|
||||
private int _columnToSort;
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the order in which to sort (i.e. 'Ascending').
|
||||
/// </summary>
|
||||
private SortOrder _orderOfSort;
|
||||
|
||||
/// <summary>
|
||||
/// Case insensitive comparer object
|
||||
/// </summary>
|
||||
private readonly CaseInsensitiveComparer _objectCompare;
|
||||
|
||||
/// <summary>
|
||||
/// Class constructor. Initializes various elements
|
||||
/// </summary>
|
||||
public ListViewColumnSorter()
|
||||
{
|
||||
// Initialize the column to '0'
|
||||
_columnToSort = 0;
|
||||
|
||||
// Initialize the sort order to 'none'
|
||||
_orderOfSort = SortOrder.None;
|
||||
|
||||
// Initialize the CaseInsensitiveComparer object
|
||||
_objectCompare = new CaseInsensitiveComparer();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This method is inherited from the IComparer interface. It compares the two objects passed using a case insensitive comparison.
|
||||
/// </summary>
|
||||
/// <param name="x">First object to be compared</param>
|
||||
/// <param name="y">Second object to be compared</param>
|
||||
/// <returns>The result of the comparison. "0" if equal, negative if 'x' is less than 'y' and positive if 'x' is greater than 'y'</returns>
|
||||
public int Compare(object x, object y)
|
||||
{
|
||||
// Cast the objects to be compared to ListViewItem objects
|
||||
ListViewItem listviewX = (ListViewItem)x;
|
||||
ListViewItem listviewY = (ListViewItem)y;
|
||||
|
||||
// Compare the two items
|
||||
var compareResult = _objectCompare.Compare(listviewX.SubItems[_columnToSort].Text, listviewY.SubItems[_columnToSort].Text);
|
||||
|
||||
// Calculate correct return value based on object comparison
|
||||
if (_orderOfSort == SortOrder.Ascending)
|
||||
{
|
||||
// Ascending sort is selected, return normal result of compare operation
|
||||
return compareResult;
|
||||
}
|
||||
|
||||
if (_orderOfSort == SortOrder.Descending)
|
||||
{
|
||||
// Descending sort is selected, return negative result of compare operation
|
||||
return (-compareResult);
|
||||
}
|
||||
|
||||
// Return '0' to indicate they are equal
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the number of the column to which to apply the sorting operation (Defaults to '0').
|
||||
/// </summary>
|
||||
public int SortColumn
|
||||
{
|
||||
set
|
||||
{
|
||||
_columnToSort = value;
|
||||
}
|
||||
get
|
||||
{
|
||||
return _columnToSort;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the order of sorting to apply (for example, 'Ascending' or 'Descending').
|
||||
/// </summary>
|
||||
public SortOrder Order
|
||||
{
|
||||
set
|
||||
{
|
||||
_orderOfSort = value;
|
||||
}
|
||||
get
|
||||
{
|
||||
return _orderOfSort;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
128
WmiExplorer/Classes/ListViewExtensions.cs
Normal file
128
WmiExplorer/Classes/ListViewExtensions.cs
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Forms;
|
||||
|
||||
// ReSharper disable InconsistentNaming
|
||||
// ReSharper disable UnusedMember.Local
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
// Sort listview Columns and Set Sort Arrow Icon on Column Header
|
||||
// http://www.codeproject.com/Tips/734463/Sort-listview-Columns-and-Set-Sort-Arrow-Icon-on-C
|
||||
internal static class ListViewExtensions
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct LVCOLUMN
|
||||
{
|
||||
public Int32 mask;
|
||||
public Int32 cx;
|
||||
|
||||
[MarshalAs(UnmanagedType.LPTStr)]
|
||||
public string pszText;
|
||||
|
||||
public IntPtr hbm;
|
||||
public Int32 cchTextMax;
|
||||
public Int32 fmt;
|
||||
public Int32 iSubItem;
|
||||
public Int32 iImage;
|
||||
public Int32 iOrder;
|
||||
}
|
||||
|
||||
private const Int32 HDI_WIDTH = 0x0001;
|
||||
private const Int32 HDI_HEIGHT = HDI_WIDTH;
|
||||
private const Int32 HDI_TEXT = 0x0002;
|
||||
private const Int32 HDI_FORMAT = 0x0004;
|
||||
private const Int32 HDI_LPARAM = 0x0008;
|
||||
private const Int32 HDI_BITMAP = 0x0010;
|
||||
private const Int32 HDI_IMAGE = 0x0020;
|
||||
private const Int32 HDI_DI_SETITEM = 0x0040;
|
||||
private const Int32 HDI_ORDER = 0x0080;
|
||||
private const Int32 HDI_FILTER = 0x0100;
|
||||
|
||||
private const Int32 HDF_LEFT = 0x0000;
|
||||
private const Int32 HDF_RIGHT = 0x0001;
|
||||
private const Int32 HDF_CENTER = 0x0002;
|
||||
private const Int32 HDF_JUSTIFYMASK = 0x0003;
|
||||
private const Int32 HDF_RTLREADING = 0x0004;
|
||||
private const Int32 HDF_OWNERDRAW = 0x8000;
|
||||
private const Int32 HDF_STRING = 0x4000;
|
||||
private const Int32 HDF_BITMAP = 0x2000;
|
||||
private const Int32 HDF_BITMAP_ON_RIGHT = 0x1000;
|
||||
private const Int32 HDF_IMAGE = 0x0800;
|
||||
private const Int32 HDF_SORTUP = 0x0400;
|
||||
private const Int32 HDF_SORTDOWN = 0x0200;
|
||||
|
||||
private const Int32 LVM_FIRST = 0x1000; // List messages
|
||||
private const Int32 LVM_GETHEADER = LVM_FIRST + 31;
|
||||
private const Int32 HDM_FIRST = 0x1200; // Header messages
|
||||
private const Int32 HDM_SETIMAGELIST = HDM_FIRST + 8;
|
||||
private const Int32 HDM_GETIMAGELIST = HDM_FIRST + 9;
|
||||
private const Int32 HDM_GETITEM = HDM_FIRST + 11;
|
||||
private const Int32 HDM_SETITEM = HDM_FIRST + 12;
|
||||
|
||||
//This method is used to set arrow icon
|
||||
public static void SetSortIcon(this ListView listView, int columnIndex, SortOrder order)
|
||||
{
|
||||
IntPtr columnHeader = NativeMethods.SendMessage(listView.Handle, LVM_GETHEADER, IntPtr.Zero, IntPtr.Zero);
|
||||
|
||||
for (int columnNumber = 0; columnNumber <= listView.Columns.Count - 1; columnNumber++)
|
||||
{
|
||||
IntPtr columnPtr = new IntPtr(columnNumber);
|
||||
LVCOLUMN lvColumn = new LVCOLUMN();
|
||||
lvColumn.mask = HDI_FORMAT;
|
||||
|
||||
NativeMethods.SendMessageLVCOLUMN(columnHeader, HDM_GETITEM, columnPtr, ref lvColumn);
|
||||
|
||||
if (!(order == SortOrder.None) && columnNumber == columnIndex)
|
||||
{
|
||||
switch (order)
|
||||
{
|
||||
case SortOrder.Ascending:
|
||||
lvColumn.fmt &= ~HDF_SORTDOWN;
|
||||
lvColumn.fmt |= HDF_SORTUP;
|
||||
break;
|
||||
|
||||
case SortOrder.Descending:
|
||||
lvColumn.fmt &= ~HDF_SORTUP;
|
||||
lvColumn.fmt |= HDF_SORTDOWN;
|
||||
break;
|
||||
}
|
||||
lvColumn.fmt |= (HDF_LEFT | HDF_BITMAP_ON_RIGHT);
|
||||
}
|
||||
else
|
||||
{
|
||||
lvColumn.fmt &= ~HDF_SORTDOWN & ~HDF_SORTUP & ~HDF_BITMAP_ON_RIGHT;
|
||||
}
|
||||
|
||||
NativeMethods.SendMessageLVCOLUMN(columnHeader, HDM_SETITEM, columnPtr, ref lvColumn);
|
||||
}
|
||||
}
|
||||
|
||||
// Reference link:
|
||||
// http://stackoverflow.com/questions/14133225/listview-autoresizecolumns-based-on-both-column-content-and-header
|
||||
// Reference link
|
||||
public static void ResizeColumns(this ListView lv)
|
||||
{
|
||||
//lv.AutoResizeColumns(lv.Items.Count > 0
|
||||
// ? ColumnHeaderAutoResizeStyle.ColumnContent
|
||||
// : ColumnHeaderAutoResizeStyle.HeaderSize);
|
||||
|
||||
lv.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||
lv.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
|
||||
|
||||
//lv.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||
//ListView.ColumnHeaderCollection cc = lv.Columns;
|
||||
//for (int i = 0; i < cc.Count; i++)
|
||||
//{
|
||||
// int colWidth = TextRenderer.MeasureText(cc[i].Text, lv.Font).Width + 10;
|
||||
// if (colWidth > cc[i].Width)
|
||||
// {
|
||||
// cc[i].Width = colWidth;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ReSharper restore InconsistentNaming
|
||||
// ReSharper restore UnusedMember.Local
|
||||
236
WmiExplorer/Classes/ManagementBaseObjectPropertyDescriptor.cs
Normal file
236
WmiExplorer/Classes/ManagementBaseObjectPropertyDescriptor.cs
Normal file
|
|
@ -0,0 +1,236 @@
|
|||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Management;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
/// <summary>
|
||||
/// Required for Implementation of ICustomTypeDescriptor
|
||||
/// Reference Links and Tutorials:
|
||||
/// http://www.codeproject.com/Articles/539202/CIMTool-for-Windows-Management-Instrumentation-Par
|
||||
/// http://www.codeproject.com/Articles/4448/Customized-display-of-collection-data-in-a-Propert
|
||||
/// http://msdn.microsoft.com/en-us/magazine/cc163816.aspx
|
||||
/// </summary>
|
||||
[TypeConverter(typeof(ManagementBaseObjectWConverter))]
|
||||
internal class ManagementBaseObjectPropertyDescriptor : PropertyDescriptor
|
||||
{
|
||||
protected string category;
|
||||
private readonly PropertyData _property;
|
||||
private readonly ManagementBaseObjectW _wrapperObject;
|
||||
|
||||
public ManagementBaseObjectPropertyDescriptor(ManagementBaseObjectW actualObject, PropertyData property)
|
||||
: base(property.Name, null)
|
||||
{
|
||||
_wrapperObject = actualObject;
|
||||
_property = property;
|
||||
|
||||
if (_property.Origin == "___SYSTEM")
|
||||
category = "System Properties";
|
||||
else
|
||||
category = "Properties";
|
||||
}
|
||||
|
||||
public override string Category
|
||||
{
|
||||
get
|
||||
{
|
||||
return category;
|
||||
}
|
||||
}
|
||||
|
||||
public override Type ComponentType
|
||||
{
|
||||
get
|
||||
{
|
||||
return _wrapperObject.GetType();
|
||||
}
|
||||
}
|
||||
|
||||
public override string Description
|
||||
{
|
||||
get
|
||||
{
|
||||
// Embedded instance
|
||||
if (_property.Value is ManagementBaseObject || _property.Type == CimType.Object)
|
||||
{
|
||||
string derivation;
|
||||
|
||||
try
|
||||
{
|
||||
derivation = "Embedded " + _property.Qualifiers["CIMTYPE"].Value;
|
||||
}
|
||||
catch
|
||||
{
|
||||
derivation = "Embedded Object";
|
||||
}
|
||||
|
||||
return derivation;
|
||||
}
|
||||
|
||||
string retVal = "Type - " + _property.Type;
|
||||
|
||||
if (_property.IsArray)
|
||||
retVal += " []";
|
||||
|
||||
if (_property.Type == CimType.DateTime && _property.Value != null && !_property.IsArray)
|
||||
retVal = retVal + " - Normalized Value: " + GetNormalizedDate(_property);
|
||||
|
||||
string pDesc = "";
|
||||
try
|
||||
{
|
||||
ManagementClass mClass = new ManagementClass(_wrapperObject.ClassPath.Path);
|
||||
mClass.Options.UseAmendedQualifiers = true;
|
||||
|
||||
foreach (QualifierData qd in mClass.Properties[_property.Name].Qualifiers)
|
||||
{
|
||||
if (qd.Name == "Description")
|
||||
pDesc = qd.Value.ToString();
|
||||
|
||||
if (qd.Name == "lazy")
|
||||
retVal += Environment.NewLine + "Lazy Property";
|
||||
|
||||
if (qd.Name == "enumeration")
|
||||
retVal += Environment.NewLine + "Enumeration: " + qd.Value;
|
||||
// TODO: Find other qualifier containing enumerations (Values, ValueMap)
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
pDesc = "";
|
||||
}
|
||||
|
||||
if (pDesc != "")
|
||||
retVal += Environment.NewLine + pDesc;
|
||||
|
||||
return retVal;
|
||||
}
|
||||
}
|
||||
|
||||
public override string DisplayName
|
||||
{
|
||||
get
|
||||
{
|
||||
string retVal = _property.Name;
|
||||
|
||||
foreach (QualifierData q in _property.Qualifiers)
|
||||
{
|
||||
if (q.Name == "key")
|
||||
retVal = "*" + retVal;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool IsReadOnly
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override Type PropertyType
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetDotNetType();
|
||||
}
|
||||
}
|
||||
|
||||
public override bool CanResetValue(object component)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public Type GetDotNetType()
|
||||
{
|
||||
if ((_property.Type == CimType.Object) && (_property.Value is ManagementBaseObject))
|
||||
{
|
||||
if (_property.Value is ManagementClass)
|
||||
{
|
||||
return typeof(ManagementClass);
|
||||
}
|
||||
|
||||
if (_property.Value is ManagementObject)
|
||||
{
|
||||
return typeof(ManagementObject);
|
||||
}
|
||||
|
||||
return typeof(ManagementBaseObject);
|
||||
}
|
||||
|
||||
return ManagementBaseObjectW.GetTypeFor(_property.Type, _property.IsArray);
|
||||
}
|
||||
|
||||
public override object GetValue(object component)
|
||||
{
|
||||
// To expand and display embedded instances, such as Props for SMS SCI classes.
|
||||
var val = ((ManagementBaseObjectW)component)[_property.Name];
|
||||
|
||||
if (val is ManagementBaseObject[])
|
||||
{
|
||||
ManagementBaseObject[] props = (ManagementBaseObject[])val;
|
||||
ManagementBaseObjectW[] propvalues = new ManagementBaseObjectW[props.Length];
|
||||
for (int i = 0; i < props.Length; i++)
|
||||
{
|
||||
propvalues[i] = new ManagementBaseObjectW(props[i]);
|
||||
}
|
||||
return propvalues;
|
||||
}
|
||||
|
||||
if (val is ManagementBaseObject)
|
||||
{
|
||||
ManagementBaseObject props = (ManagementBaseObject)val;
|
||||
ManagementBaseObjectW propvalue = new ManagementBaseObjectW(props);
|
||||
return propvalue;
|
||||
}
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
public override void ResetValue(object component)
|
||||
{
|
||||
}
|
||||
|
||||
public override void SetValue(object component, object value)
|
||||
{
|
||||
((ManagementBaseObjectW)component)[_property.Name] = value;
|
||||
}
|
||||
|
||||
public override bool ShouldSerializeValue(object component)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected static object GetNormalizedDate(PropertyData propertyData)
|
||||
{
|
||||
object retVal = propertyData.Value;
|
||||
|
||||
if (propertyData.Type == CimType.DateTime && propertyData.Value != null)
|
||||
{
|
||||
//20080409032454.676631-420
|
||||
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
||||
// Y 2 0 0 8 M 0 4 D 0 9 H 0 3 M 2 4 S 5 4 . m 6 7 6 6 3 1 U-420
|
||||
string dateString = propertyData.Value.ToString();
|
||||
try
|
||||
{
|
||||
retVal = new DateTime(
|
||||
int.Parse(dateString.Substring(0, 4)),
|
||||
int.Parse(dateString.Substring(4, 2)),
|
||||
int.Parse(dateString.Substring(6, 2)),
|
||||
int.Parse(dateString.Substring(8, 2)),
|
||||
int.Parse(dateString.Substring(10, 2)),
|
||||
int.Parse(dateString.Substring(12, 2)),
|
||||
int.Parse(dateString.Substring(15, 6)) / 1000, DateTimeKind.Local);
|
||||
}
|
||||
catch (ArgumentOutOfRangeException)
|
||||
{
|
||||
retVal = dateString;
|
||||
}
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
}
|
||||
}
|
||||
339
WmiExplorer/Classes/ManagementBaseObjectW.cs
Normal file
339
WmiExplorer/Classes/ManagementBaseObjectW.cs
Normal file
|
|
@ -0,0 +1,339 @@
|
|||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Management;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
/// <summary>
|
||||
/// Wrapper Class for ManagementBaseObject
|
||||
/// Uses ManagementBaseObjectWConverter to display appropriate text if Embedded Objects are expanded.
|
||||
/// Reference Links and Tutorials:
|
||||
/// http://www.codeproject.com/Articles/539202/CIMTool-for-Windows-Management-Instrumentation-Par
|
||||
/// http://www.codeproject.com/Articles/4448/Customized-display-of-collection-data-in-a-Propert
|
||||
/// http://msdn.microsoft.com/en-us/magazine/cc163816.aspx
|
||||
/// </summary>
|
||||
[TypeConverter(typeof(ManagementBaseObjectWConverter))]
|
||||
internal class ManagementBaseObjectW : ICustomTypeDescriptor
|
||||
{
|
||||
private readonly ManagementBaseObject _wrapperObject;
|
||||
|
||||
private ManagementPath _classPath;
|
||||
|
||||
private PropertyDataCollection _properties;
|
||||
|
||||
private QualifierDataCollection _qualifiers;
|
||||
|
||||
private PropertyDataCollection _systemProperties;
|
||||
|
||||
private PropertyDescriptorCollection _propertyDescriptorCollection;
|
||||
|
||||
public ManagementBaseObjectW(ManagementBaseObject actualObject)
|
||||
{
|
||||
_wrapperObject = actualObject;
|
||||
}
|
||||
|
||||
public ManagementPath ClassPath
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_classPath == null)
|
||||
{
|
||||
_classPath = _wrapperObject.ClassPath;
|
||||
}
|
||||
return _classPath;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IncludeNullProperties { get; set; }
|
||||
|
||||
public bool IncludeSystemProperties { get; set; }
|
||||
|
||||
public PropertyDataCollection Properties
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_properties == null)
|
||||
{
|
||||
_properties = _wrapperObject.Properties;
|
||||
}
|
||||
return _properties;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual QualifierDataCollection Qualifiers
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_qualifiers == null)
|
||||
{
|
||||
_qualifiers = _wrapperObject.Qualifiers;
|
||||
}
|
||||
return _qualifiers;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual PropertyDataCollection SystemProperties
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_systemProperties == null)
|
||||
{
|
||||
_systemProperties = _wrapperObject.SystemProperties;
|
||||
}
|
||||
return _systemProperties;
|
||||
}
|
||||
}
|
||||
|
||||
public object this[string propertyName]
|
||||
{
|
||||
get
|
||||
{
|
||||
return _wrapperObject[propertyName];
|
||||
}
|
||||
set
|
||||
{
|
||||
_wrapperObject[propertyName] = value;
|
||||
}
|
||||
}
|
||||
|
||||
public static Type GetTypeFor(CimType cimType, bool isArray)
|
||||
{
|
||||
switch (cimType)
|
||||
{
|
||||
case CimType.None:
|
||||
break;
|
||||
|
||||
case CimType.SInt8:
|
||||
if (isArray)
|
||||
return typeof(sbyte[]);
|
||||
return typeof(sbyte);
|
||||
|
||||
case CimType.UInt8:
|
||||
if (isArray)
|
||||
return typeof(byte[]);
|
||||
return typeof(byte);
|
||||
|
||||
case CimType.SInt16:
|
||||
if (isArray)
|
||||
return typeof(short[]);
|
||||
return typeof(short);
|
||||
|
||||
case CimType.UInt16:
|
||||
if (isArray)
|
||||
return typeof(ushort[]);
|
||||
return typeof(ushort);
|
||||
|
||||
case CimType.SInt32:
|
||||
if (isArray)
|
||||
return typeof(int[]);
|
||||
return typeof(int);
|
||||
|
||||
case CimType.UInt32:
|
||||
if (isArray)
|
||||
return typeof(uint[]);
|
||||
return typeof(uint);
|
||||
|
||||
case CimType.SInt64:
|
||||
if (isArray)
|
||||
return typeof(long[]);
|
||||
return typeof(long);
|
||||
|
||||
case CimType.UInt64:
|
||||
if (isArray)
|
||||
return typeof(ulong[]);
|
||||
return typeof(ulong);
|
||||
|
||||
case CimType.Real32:
|
||||
if (isArray)
|
||||
return typeof(float[]);
|
||||
return typeof(float);
|
||||
|
||||
case CimType.Real64:
|
||||
if (isArray)
|
||||
return typeof(double[]);
|
||||
return typeof(double);
|
||||
|
||||
case CimType.Boolean:
|
||||
if (isArray)
|
||||
return typeof(bool[]);
|
||||
return typeof(bool);
|
||||
|
||||
case CimType.String:
|
||||
if (isArray)
|
||||
return typeof(string[]);
|
||||
return typeof(string);
|
||||
|
||||
case CimType.DateTime:
|
||||
if (isArray)
|
||||
return typeof(DateTime[]);
|
||||
return typeof(DateTime);
|
||||
|
||||
case CimType.Reference:
|
||||
if (isArray)
|
||||
return typeof(object[]);
|
||||
return typeof(object);
|
||||
|
||||
case CimType.Char16:
|
||||
if (isArray)
|
||||
return typeof(char[]);
|
||||
return typeof(char);
|
||||
|
||||
case CimType.Object:
|
||||
|
||||
if (isArray)
|
||||
return typeof(object[]);
|
||||
return typeof(object);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public bool CompareTo(ManagementBaseObject otherObject, ComparisonSettings settings)
|
||||
{
|
||||
return _wrapperObject.CompareTo(otherObject, settings);
|
||||
}
|
||||
|
||||
public PropertyDescriptorCollection GetProperties()
|
||||
{
|
||||
if (_propertyDescriptorCollection == null)
|
||||
{
|
||||
_propertyDescriptorCollection = new PropertyDescriptorCollection(null);
|
||||
|
||||
// Properties
|
||||
foreach (PropertyData property in Properties)
|
||||
{
|
||||
if (_propertyDescriptorCollection.Find(property.Name, true) == null)
|
||||
{
|
||||
if (IncludeNullProperties)
|
||||
{
|
||||
PropertyDescriptor propertyDescriptor = GetPropertyDescriptor(property);
|
||||
_propertyDescriptorCollection.Add(propertyDescriptor);
|
||||
}
|
||||
else if (property.Value != null)
|
||||
{
|
||||
PropertyDescriptor propertyDescriptor = GetPropertyDescriptor(property);
|
||||
_propertyDescriptorCollection.Add(propertyDescriptor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// System Properties
|
||||
if (IncludeSystemProperties)
|
||||
{
|
||||
foreach (PropertyData property in SystemProperties)
|
||||
{
|
||||
if (_propertyDescriptorCollection.Find(property.Name, true) == null)
|
||||
{
|
||||
PropertyDescriptor propertyDescriptor = GetPropertyDescriptor(property);
|
||||
_propertyDescriptorCollection.Add(propertyDescriptor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return _propertyDescriptorCollection;
|
||||
}
|
||||
|
||||
public object GetPropertyQualifierValue(string propertyName, string qualifierName)
|
||||
{
|
||||
return _wrapperObject.GetPropertyQualifierValue(propertyName, qualifierName);
|
||||
}
|
||||
|
||||
public object GetPropertyValue(string propertyName)
|
||||
{
|
||||
//not used by PropertyGrid
|
||||
return _wrapperObject.GetPropertyValue(propertyName);
|
||||
}
|
||||
|
||||
public object GetQualifierValue(string qualifierName)
|
||||
{
|
||||
return _wrapperObject.GetQualifierValue(qualifierName);
|
||||
}
|
||||
|
||||
public string GetText(TextFormat format)
|
||||
{
|
||||
return _wrapperObject.GetText(format);
|
||||
}
|
||||
|
||||
// ICustomTypeDescriptor implementation
|
||||
AttributeCollection ICustomTypeDescriptor.GetAttributes()
|
||||
{
|
||||
return TypeDescriptor.GetAttributes(this, true);
|
||||
}
|
||||
|
||||
string ICustomTypeDescriptor.GetClassName()
|
||||
{
|
||||
return TypeDescriptor.GetClassName(this, true);
|
||||
}
|
||||
|
||||
string ICustomTypeDescriptor.GetComponentName()
|
||||
{
|
||||
return TypeDescriptor.GetComponentName(this, true);
|
||||
}
|
||||
|
||||
TypeConverter ICustomTypeDescriptor.GetConverter()
|
||||
{
|
||||
return TypeDescriptor.GetConverter(this, true);
|
||||
}
|
||||
|
||||
EventDescriptor ICustomTypeDescriptor.GetDefaultEvent()
|
||||
{
|
||||
return TypeDescriptor.GetDefaultEvent(this, true);
|
||||
}
|
||||
|
||||
PropertyDescriptor ICustomTypeDescriptor.GetDefaultProperty()
|
||||
{
|
||||
return TypeDescriptor.GetDefaultProperty(this, true);
|
||||
}
|
||||
|
||||
object ICustomTypeDescriptor.GetEditor(Type editorBaseType)
|
||||
{
|
||||
return TypeDescriptor.GetEditor(this, editorBaseType, true);
|
||||
}
|
||||
|
||||
EventDescriptorCollection ICustomTypeDescriptor.GetEvents(Attribute[] attributes)
|
||||
{
|
||||
return TypeDescriptor.GetEvents(this, attributes, true);
|
||||
}
|
||||
|
||||
EventDescriptorCollection ICustomTypeDescriptor.GetEvents()
|
||||
{
|
||||
return TypeDescriptor.GetEvents(this, true);
|
||||
}
|
||||
|
||||
PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties(Attribute[] attributes)
|
||||
{
|
||||
return GetProperties();
|
||||
}
|
||||
|
||||
PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties()
|
||||
{
|
||||
return GetProperties();
|
||||
}
|
||||
|
||||
object ICustomTypeDescriptor.GetPropertyOwner(PropertyDescriptor pd)
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
public void SetPropertyQualifierValue(string propertyName, string qualifierName, object qualifierValue)
|
||||
{
|
||||
_wrapperObject.SetPropertyQualifierValue(propertyName, qualifierName, qualifierValue);
|
||||
}
|
||||
|
||||
public void SetPropertyValue(string propertyName, object propertyValue)
|
||||
{
|
||||
_wrapperObject.SetPropertyValue(propertyName, propertyValue);
|
||||
}
|
||||
|
||||
public void SetQualifierValue(string qualifierName, object qualifierValue)
|
||||
{
|
||||
_wrapperObject.SetQualifierValue(qualifierName, qualifierValue);
|
||||
}
|
||||
|
||||
protected virtual PropertyDescriptor GetPropertyDescriptor(PropertyData property)
|
||||
{
|
||||
ManagementBaseObjectPropertyDescriptor result = new ManagementBaseObjectPropertyDescriptor(this, property);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
52
WmiExplorer/Classes/ManagementBaseObjectWConverter.cs
Normal file
52
WmiExplorer/Classes/ManagementBaseObjectWConverter.cs
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Globalization;
|
||||
using System.Management;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
/// <summary>
|
||||
/// Used to display property values of Embedded WMI Objects.
|
||||
/// Reference tutorial: http://www.codeproject.com/Articles/4448/Customized-display-of-collection-data-in-a-Propert
|
||||
/// </summary>
|
||||
internal class ManagementBaseObjectWConverter : ExpandableObjectConverter
|
||||
{
|
||||
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
|
||||
{
|
||||
if (value is ManagementBaseObjectW)
|
||||
{
|
||||
ManagementBaseObjectW mObjectW = (ManagementBaseObjectW)value;
|
||||
|
||||
// If PropertyName contains Name, return the value of the property
|
||||
foreach (PropertyData p in mObjectW.Properties)
|
||||
{
|
||||
if (p.Name.Contains("Name"))
|
||||
return p.Value.ToString();
|
||||
}
|
||||
|
||||
// No match on Name. If PropertyName contains ID, return the value of the property
|
||||
foreach (PropertyData p in mObjectW.Properties)
|
||||
{
|
||||
if (p.Name.Contains("ID"))
|
||||
return p.Value.ToString();
|
||||
}
|
||||
|
||||
// No match on Name or ID. If Property is key, return the value of the property
|
||||
foreach (PropertyData p in mObjectW.Properties)
|
||||
{
|
||||
foreach (QualifierData q in p.Qualifiers)
|
||||
if (q.Name.Equals("key", StringComparison.InvariantCultureIgnoreCase))
|
||||
if (String.IsNullOrEmpty(p.Value.ToString()))
|
||||
return String.Empty;
|
||||
else
|
||||
return p.Value.ToString();
|
||||
}
|
||||
|
||||
// No matches. Return an empty string.
|
||||
return String.Empty;
|
||||
}
|
||||
|
||||
return base.ConvertTo(context, culture, value, destinationType);
|
||||
}
|
||||
}
|
||||
}
|
||||
17
WmiExplorer/Classes/ManagementObjectW.cs
Normal file
17
WmiExplorer/Classes/ManagementObjectW.cs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
using System.ComponentModel;
|
||||
using System.Management;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
/// <summary>
|
||||
/// Wrapper Class for ManagementObject
|
||||
/// </summary>
|
||||
[TypeConverter(typeof(ManagementBaseObjectWConverter))]
|
||||
internal class ManagementObjectW : ManagementBaseObjectW
|
||||
{
|
||||
public ManagementObjectW(ManagementBaseObject actualObject)
|
||||
: base(actualObject)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
34
WmiExplorer/Classes/MouseWheelMessageFilter.cs
Normal file
34
WmiExplorer/Classes/MouseWheelMessageFilter.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
/// <summary>
|
||||
/// Used to allow scrolling for the controls, without having to select them or focus on them.
|
||||
/// http://www.brad-smith.info/blog/archives/635
|
||||
/// http://stackoverflow.com/questions/7852824/usercontrol-how-to-add-mousewheel-listener
|
||||
/// </summary>
|
||||
internal class MouseWheelMessageFilter : IMessageFilter
|
||||
{
|
||||
private const int WM_MOUSEWHEEL = 0x20a;
|
||||
|
||||
public bool PreFilterMessage(ref Message m)
|
||||
{
|
||||
if (m.Msg == WM_MOUSEWHEEL)
|
||||
{
|
||||
// LParam contains the location of the mouse pointer
|
||||
Point pos = new Point(m.LParam.ToInt32() & 0xffff, m.LParam.ToInt32() >> 16);
|
||||
IntPtr hWnd = NativeMethods.WindowFromPoint(pos);
|
||||
if (hWnd != IntPtr.Zero && hWnd != m.HWnd && Control.FromHandle(hWnd) != null)
|
||||
{
|
||||
// redirect the message to the correct control
|
||||
NativeMethods.SendMessage(hWnd, m.Msg, m.WParam, m.LParam);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
30
WmiExplorer/Classes/NativeMethods.cs
Normal file
30
WmiExplorer/Classes/NativeMethods.cs
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
using System;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Drawing;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
/// <summary>
|
||||
/// Wrapper for Native Methods
|
||||
/// </summary>
|
||||
internal class NativeMethods
|
||||
{
|
||||
// P/Invoke declarations
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
public static extern bool GetWindowPlacement(IntPtr hWnd, out WINDOWPLACEMENT lpwndpl);
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
|
||||
|
||||
[DllImport("user32.dll", EntryPoint = "SendMessage")]
|
||||
public static extern IntPtr SendMessageLVCOLUMN(IntPtr hWnd, Int32 Msg, IntPtr wParam, ref ListViewExtensions.LVCOLUMN lPLVCOLUMN);
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
public static extern bool SetWindowPlacement(IntPtr hWnd, [In] ref WINDOWPLACEMENT lpwndpl);
|
||||
|
||||
[SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", MessageId = "0"), DllImport("user32.dll")]
|
||||
public static extern IntPtr WindowFromPoint(Point pt);
|
||||
}
|
||||
}
|
||||
139
WmiExplorer/Classes/ObserverHandler.cs
Normal file
139
WmiExplorer/Classes/ObserverHandler.cs
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Management;
|
||||
using System.Runtime.Caching;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
internal class ObserverHandler
|
||||
{
|
||||
private readonly bool _isClass;
|
||||
private readonly bool _isNamespace;
|
||||
private readonly Stopwatch _stopwatch = new Stopwatch();
|
||||
private readonly WmiClass _wmiClass;
|
||||
private readonly WmiNamespace _wmiNamespace;
|
||||
|
||||
/// <summary>
|
||||
/// Constructor for observer working on retrieving classes for a Namespace
|
||||
/// </summary>
|
||||
/// <param name="wmiNamespace">Instance of WmiNamespace for which to enumerate classes</param>
|
||||
public ObserverHandler(WmiNamespace wmiNamespace)
|
||||
{
|
||||
_wmiNamespace = wmiNamespace;
|
||||
_wmiNamespace.IsEnumerating = true;
|
||||
_isNamespace = true;
|
||||
_stopwatch.Start();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructor for observer working on retrieving instances for a Class
|
||||
/// </summary>
|
||||
/// <param name="wmiClass">Instance of WmiClass for which to enumerate instances</param>
|
||||
public ObserverHandler(WmiClass wmiClass)
|
||||
{
|
||||
_wmiClass = wmiClass;
|
||||
_wmiClass.IsEnumerating = true;
|
||||
_isClass = true;
|
||||
_stopwatch.Start();
|
||||
}
|
||||
|
||||
public bool IsComplete { get; private set; }
|
||||
|
||||
public void Done(object sender, CompletedEventArgs e)
|
||||
{
|
||||
_stopwatch.Stop();
|
||||
|
||||
if (_isNamespace)
|
||||
{
|
||||
if (e.Status == ManagementStatus.CallCanceled)
|
||||
{
|
||||
_wmiNamespace.IsPartiallyEnumerated = true;
|
||||
_wmiNamespace.IsEnumerationCancelled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
_wmiNamespace.IsPartiallyEnumerated = false;
|
||||
_wmiNamespace.IsEnumerationCancelled = false;
|
||||
}
|
||||
|
||||
_wmiNamespace.IsEnumerated = true;
|
||||
_wmiNamespace.IsEnumerating = false;
|
||||
_wmiNamespace.EnumerationStatus = e.Status.ToString();
|
||||
_wmiNamespace.EnumTime = DateTime.Now;
|
||||
_wmiNamespace.EnumTimeElapsed = _stopwatch.Elapsed;
|
||||
|
||||
CacheItem ci = new CacheItem(_wmiNamespace.Path, _wmiNamespace.Classes);
|
||||
WmiExplorer.AppCache.Set(ci, WmiExplorer.CachePolicy);
|
||||
_wmiNamespace.ResetClasses();
|
||||
}
|
||||
|
||||
if (_isClass)
|
||||
{
|
||||
if (e.Status == ManagementStatus.CallCanceled)
|
||||
{
|
||||
_wmiClass.IsPartiallyEnumerated = true;
|
||||
_wmiClass.IsEnumerationCancelled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
_wmiClass.IsPartiallyEnumerated = false;
|
||||
_wmiClass.IsEnumerationCancelled = false;
|
||||
}
|
||||
|
||||
_wmiClass.IsEnumerated = true;
|
||||
_wmiClass.IsEnumerating = false;
|
||||
_wmiClass.IsEnumerationCancelled = false;
|
||||
_wmiClass.EnumerationStatus = e.Status.ToString();
|
||||
_wmiClass.EnumTime = DateTime.Now;
|
||||
_wmiClass.EnumTimeElapsed = _stopwatch.Elapsed;
|
||||
|
||||
CacheItem ci = new CacheItem(_wmiClass.Path, _wmiClass.Instances);
|
||||
WmiExplorer.AppCache.Set(ci, WmiExplorer.CachePolicy);
|
||||
_wmiClass.ResetInstances();
|
||||
}
|
||||
|
||||
IsComplete = true;
|
||||
}
|
||||
|
||||
public void NewObject(object sender, ObjectReadyEventArgs e)
|
||||
{
|
||||
ManagementObject mObject = (ManagementObject)e.NewObject;
|
||||
|
||||
if (mObject.Path.IsClass && _isNamespace)
|
||||
{
|
||||
WmiClass wmiClass = new WmiClass(mObject as ManagementClass);
|
||||
|
||||
ListViewItem li = new ListViewItem
|
||||
{
|
||||
Name = wmiClass.Path,
|
||||
Text = wmiClass.DisplayName,
|
||||
ToolTipText = wmiClass.Description,
|
||||
Tag = wmiClass
|
||||
};
|
||||
|
||||
// Add Lazy Properties, Description, and Path columns
|
||||
li.SubItems.Add(wmiClass.HasLazyProperties.ToString());
|
||||
li.SubItems.Add(wmiClass.Description);
|
||||
li.SubItems.Add(wmiClass.Path);
|
||||
|
||||
_wmiNamespace.AddClass(li);
|
||||
}
|
||||
|
||||
if (mObject.Path.IsInstance && _isClass)
|
||||
{
|
||||
WmiInstance wmiInstance = new WmiInstance(mObject);
|
||||
|
||||
ListViewItem li = new ListViewItem
|
||||
{
|
||||
Name = wmiInstance.Path,
|
||||
Text = wmiInstance.RelativePath,
|
||||
ToolTipText = wmiInstance.RelativePath,
|
||||
Tag = wmiInstance
|
||||
};
|
||||
|
||||
_wmiClass.AddInstance(li);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
33
WmiExplorer/Classes/ToolStripItemCollectionSorter.cs
Normal file
33
WmiExplorer/Classes/ToolStripItemCollectionSorter.cs
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
public static class ToolStripItemExtensions
|
||||
{
|
||||
public static void SortToolStripItemCollection(this ToolStripItemCollection items)
|
||||
{
|
||||
ArrayList aList = new ArrayList(items);
|
||||
aList.Sort(new ToolStripItemCollectionSorter());
|
||||
items.Clear();
|
||||
|
||||
foreach (ToolStripItem item in aList)
|
||||
{
|
||||
items.Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class ToolStripItemCollectionSorter : IComparer
|
||||
{
|
||||
public int Compare(object x, object y)
|
||||
{
|
||||
// Cast the objects to be compared to ListViewItem objects
|
||||
ToolStripItem toolStripItemX = (ToolStripItem)x;
|
||||
ToolStripItem toolStripItemY = (ToolStripItem)y;
|
||||
|
||||
return String.Compare(toolStripItemX.Text, toolStripItemY.Text, StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
}
|
||||
}
|
||||
216
WmiExplorer/Classes/Utilities.cs
Normal file
216
WmiExplorer/Classes/Utilities.cs
Normal file
|
|
@ -0,0 +1,216 @@
|
|||
using System;
|
||||
using System.Collections.Specialized;
|
||||
using System.Configuration;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
using System.Security.Principal;
|
||||
using System.Windows.Forms;
|
||||
using WmiExplorer.Properties;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
public static class Utilities
|
||||
{
|
||||
/// <summary>
|
||||
/// Checks if Application is running as Administrator
|
||||
/// </summary>
|
||||
/// <returns>True if running as Administrator.</returns>
|
||||
public static bool CheckIfElevated()
|
||||
{
|
||||
try
|
||||
{
|
||||
WindowsIdentity userIdentity = WindowsIdentity.GetCurrent();
|
||||
WindowsPrincipal userPrincipal = new WindowsPrincipal(userIdentity);
|
||||
|
||||
if (userPrincipal.IsInRole(WindowsBuiltInRole.Administrator))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show("Failed to determine if Application is running as Administrator: " + ex.Message);
|
||||
//Log("Unable to determine whether Application is running Elevated. Error: " + ex.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// To search and highlight text in Rich Text Box
|
||||
/// http://www.dotnetcurry.com/showarticle.aspx?ID=146
|
||||
/// </summary>
|
||||
/// <param name="txtToSearch">Text to Search in RichTextBox rtb</param>
|
||||
/// <param name="searchStart">Start index for search</param>
|
||||
/// <param name="indexOfSearchText">Index of Last Search result</param>
|
||||
/// <param name="rtb">RichTextBox to search in</param>
|
||||
/// <returns></returns>
|
||||
public static int FindTextInRichTextBox(string txtToSearch, int searchStart, int indexOfSearchText, RichTextBox rtb)
|
||||
{
|
||||
// Set the return value to -1 by default.
|
||||
int retVal = -1;
|
||||
int searchEnd = rtb.Text.Length;
|
||||
|
||||
// A valid starting index should be specified.
|
||||
// if _indexOfSearchText = -1, the end of search
|
||||
if (searchStart >= 0 && indexOfSearchText >= 0)
|
||||
{
|
||||
// A valid ending index
|
||||
if (searchEnd > searchStart || searchEnd == -1)
|
||||
{
|
||||
// Find the position of search string in RichTextBox
|
||||
indexOfSearchText = rtb.Find(txtToSearch, searchStart, searchEnd, RichTextBoxFinds.None);
|
||||
|
||||
// Determine whether the text was found in rtb.
|
||||
if (indexOfSearchText != -1)
|
||||
{
|
||||
// Return the index to the specified search text.
|
||||
retVal = indexOfSearchText;
|
||||
}
|
||||
}
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns all Application settings
|
||||
/// </summary>
|
||||
/// <returns>String value containing name & value of all settings</returns>
|
||||
public static string GetSettings()
|
||||
{
|
||||
string settings = String.Empty;
|
||||
|
||||
foreach (SettingsProperty p in from SettingsProperty p in Settings.Default.Properties
|
||||
orderby p.Name
|
||||
select p)
|
||||
{
|
||||
// Exclude UpdateCheckUrl and WindowPlacement settings
|
||||
if (p.Name.StartsWith("UpdateCheckUrl", StringComparison.InvariantCultureIgnoreCase) || p.Name.Equals("WindowPlacement", StringComparison.InvariantCultureIgnoreCase))
|
||||
continue;
|
||||
|
||||
// Settings containing a string array
|
||||
if (Settings.Default[p.Name] is StringCollection)
|
||||
{
|
||||
settings += p.Name + " = ";
|
||||
foreach (var s in Settings.Default[p.Name] as StringCollection)
|
||||
settings += s + ", ";
|
||||
settings += "\r\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
// Settings without default values
|
||||
if (p.DefaultValue == null)
|
||||
{
|
||||
settings += p.Name + " = " + Settings.Default[p.Name] + "\r\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
// Other settings with indicator whether value is the default value
|
||||
if (p.DefaultValue.ToString() == Settings.Default[p.Name].ToString())
|
||||
settings += p.Name + " = " + Settings.Default[p.Name] + " (Default)\r\n";
|
||||
else
|
||||
settings += p.Name + " = " + Settings.Default[p.Name] + "\r\n";
|
||||
}
|
||||
|
||||
return settings;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Launch the specified program
|
||||
/// </summary>
|
||||
/// <param name="sCmd">Command to run</param>
|
||||
public static void LaunchProgram(string sCmd)
|
||||
{
|
||||
try
|
||||
{
|
||||
Process.Start(sCmd);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "Error launching program", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Launch the specified program with arguments
|
||||
/// </summary>
|
||||
/// <param name="sCmd">Command to run</param>
|
||||
/// <param name="sArgument">Argument for the command</param>
|
||||
/// <param name="bWaitForExit">Wait for the command to Exit</param>
|
||||
public static void LaunchProgram(string sCmd, string sArgument, bool bWaitForExit)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (bWaitForExit)
|
||||
Process.Start(sCmd, sArgument).WaitForExit();
|
||||
else
|
||||
Process.Start(sCmd, sArgument);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "Error launching program", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a string from the source SecureString
|
||||
/// http://blogs.msdn.com/b/fpintos/archive/2009/06/12/how-to-properly-convert-securestring-to-string.aspx
|
||||
/// </summary>
|
||||
/// <param name="secureString">SecureString to convert to String</param>
|
||||
/// <returns>String</returns>
|
||||
public static string SecureStringToString(this SecureString secureString)
|
||||
{
|
||||
if (secureString == null)
|
||||
throw new ArgumentNullException("secureString");
|
||||
|
||||
IntPtr unmanagedString = IntPtr.Zero;
|
||||
try
|
||||
{
|
||||
unmanagedString = Marshal.SecureStringToGlobalAllocUnicode(secureString);
|
||||
return Marshal.PtrToStringUni(unmanagedString);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Marshal.ZeroFreeGlobalAllocUnicode(unmanagedString);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a Secure string from the source string
|
||||
/// http://msdn.microsoft.com/en-us/library/system.security.securestring(v=vs.110).aspx
|
||||
/// </summary>
|
||||
/// <param name="source">String to convert to SecureString</param>
|
||||
/// <returns>SecureString</returns>
|
||||
public static SecureString StringToSecureString(this string source)
|
||||
{
|
||||
if (String.IsNullOrWhiteSpace(source))
|
||||
return null;
|
||||
|
||||
SecureString result = new SecureString();
|
||||
foreach (char c in source.ToCharArray())
|
||||
result.AppendChar(c);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update User Settings on Application version update
|
||||
/// http://www.ngpixel.com/2011/05/05/c-keep-user-settings-between-versions/
|
||||
/// </summary>
|
||||
public static void UpdateSettings()
|
||||
{
|
||||
try
|
||||
{
|
||||
Settings.Default.Upgrade();
|
||||
Settings.Default.bUpgradeSettings = false;
|
||||
Settings.Default.bUpdateAvailable = false;
|
||||
Settings.Default.Save();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show("Failed to upgrade user settings. Error: " + ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
111
WmiExplorer/Classes/WindowPlacement.cs
Normal file
111
WmiExplorer/Classes/WindowPlacement.cs
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
// Reference Link: David Rickard's Blog
|
||||
// http://blogs.msdn.com/b/davidrickard/archive/2010/03/09/saving-window-size-and-location-in-wpf-and-winforms.aspx
|
||||
|
||||
// POINT structure required by WINDOWPLACEMENT structure
|
||||
[Serializable]
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct POINT
|
||||
{
|
||||
public int X;
|
||||
public int Y;
|
||||
|
||||
public POINT(int x, int y)
|
||||
{
|
||||
X = x;
|
||||
Y = y;
|
||||
}
|
||||
}
|
||||
|
||||
// RECT structure required by WINDOWPLACEMENT structure
|
||||
[Serializable]
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct RECT
|
||||
{
|
||||
public int Left;
|
||||
public int Top;
|
||||
public int Right;
|
||||
public int Bottom;
|
||||
|
||||
public RECT(int left, int top, int right, int bottom)
|
||||
{
|
||||
Left = left;
|
||||
Top = top;
|
||||
Right = right;
|
||||
Bottom = bottom;
|
||||
}
|
||||
}
|
||||
|
||||
// WINDOWPLACEMENT stores the position, size, and state of a window
|
||||
[Serializable]
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct WINDOWPLACEMENT
|
||||
{
|
||||
public int length;
|
||||
public int flags;
|
||||
public int showCmd;
|
||||
public POINT minPosition;
|
||||
public POINT maxPosition;
|
||||
public RECT normalPosition;
|
||||
}
|
||||
|
||||
internal class WindowPlacement
|
||||
{
|
||||
private const int SW_SHOWMINIMIZED = 2;
|
||||
private const int SW_SHOWNORMAL = 1;
|
||||
private static readonly Encoding Encoding = new ASCIIEncoding();
|
||||
private static readonly XmlSerializer Serializer = new XmlSerializer(typeof(WINDOWPLACEMENT));
|
||||
|
||||
public static string GetPlacement(IntPtr windowHandle)
|
||||
{
|
||||
WINDOWPLACEMENT placement;
|
||||
NativeMethods.GetWindowPlacement(windowHandle, out placement);
|
||||
|
||||
using (MemoryStream memoryStream = new MemoryStream())
|
||||
{
|
||||
using (XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.ASCII))
|
||||
{
|
||||
Serializer.Serialize(xmlTextWriter, placement);
|
||||
byte[] xmlBytes = memoryStream.ToArray();
|
||||
return Encoding.GetString(xmlBytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetPlacement(IntPtr windowHandle, string placementXml)
|
||||
{
|
||||
if (string.IsNullOrEmpty(placementXml))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
byte[] xmlBytes = Encoding.GetBytes(placementXml);
|
||||
|
||||
try
|
||||
{
|
||||
WINDOWPLACEMENT placement;
|
||||
using (MemoryStream memoryStream = new MemoryStream(xmlBytes))
|
||||
{
|
||||
placement = (WINDOWPLACEMENT)Serializer.Deserialize(memoryStream);
|
||||
}
|
||||
|
||||
placement.length = Marshal.SizeOf(typeof(WINDOWPLACEMENT));
|
||||
placement.flags = 0;
|
||||
placement.showCmd = (placement.showCmd == SW_SHOWMINIMIZED ? SW_SHOWNORMAL : placement.showCmd);
|
||||
NativeMethods.SetWindowPlacement(windowHandle, ref placement);
|
||||
}
|
||||
catch (InvalidOperationException)
|
||||
{
|
||||
// Parsing placement XML failed. Fail silently.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
185
WmiExplorer/Classes/WmiClass.cs
Normal file
185
WmiExplorer/Classes/WmiClass.cs
Normal file
|
|
@ -0,0 +1,185 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Management;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
internal class WmiClass
|
||||
{
|
||||
public List<ListViewItem> Instances = new List<ListViewItem>();
|
||||
private string _description;
|
||||
private string _displayName;
|
||||
private string _enumerationStatus;
|
||||
private DateTime _enumTime;
|
||||
private TimeSpan _enumTimeElapsed;
|
||||
private bool _hasLazyProperties;
|
||||
private string _instanceFilterQuick;
|
||||
private string _namespacePath;
|
||||
private string _path;
|
||||
private string _relativePath;
|
||||
|
||||
public WmiClass(ManagementClass actualClass)
|
||||
{
|
||||
Class = actualClass;
|
||||
}
|
||||
|
||||
public ManagementClass Class { get; set; }
|
||||
|
||||
public string Description
|
||||
{
|
||||
get
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (QualifierData q in from QualifierData q in Class.Qualifiers where q.Name.Equals("Description", StringComparison.CurrentCultureIgnoreCase) select q)
|
||||
{
|
||||
_description = Class.GetQualifierValue("Description").ToString();
|
||||
}
|
||||
}
|
||||
catch (ManagementException ex)
|
||||
{
|
||||
if ((ex.ErrorCode).ToString() == "NotFound")
|
||||
_description = String.Empty;
|
||||
else
|
||||
_description = "Error getting Class Description";
|
||||
}
|
||||
|
||||
return _description;
|
||||
}
|
||||
}
|
||||
|
||||
public string DisplayName
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_displayName == null)
|
||||
_displayName = Class.ClassPath.ClassName;
|
||||
|
||||
return _displayName;
|
||||
}
|
||||
set { _displayName = value; }
|
||||
}
|
||||
|
||||
public string EnumerationStatus
|
||||
{
|
||||
get
|
||||
{
|
||||
if (String.IsNullOrEmpty(_enumerationStatus))
|
||||
_enumerationStatus = "NoError";
|
||||
|
||||
return _enumerationStatus;
|
||||
}
|
||||
set { _enumerationStatus = value; }
|
||||
}
|
||||
|
||||
public DateTime EnumTime
|
||||
{
|
||||
get { return _enumTime; }
|
||||
set { _enumTime = value; }
|
||||
}
|
||||
|
||||
public TimeSpan EnumTimeElapsed
|
||||
{
|
||||
get { return _enumTimeElapsed; }
|
||||
set { _enumTimeElapsed = value; }
|
||||
}
|
||||
|
||||
public bool HasLazyProperties
|
||||
{
|
||||
get
|
||||
{
|
||||
foreach (PropertyData pd in Class.Properties)
|
||||
{
|
||||
foreach (QualifierData qd in pd.Qualifiers)
|
||||
{
|
||||
if (qd.Name.Equals("lazy", StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
_hasLazyProperties = true;
|
||||
return _hasLazyProperties;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return _hasLazyProperties;
|
||||
}
|
||||
}
|
||||
|
||||
public int InstanceCount { get; set; }
|
||||
|
||||
public string InstanceFilterQuick
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_instanceFilterQuick == null)
|
||||
_instanceFilterQuick = String.Empty;
|
||||
|
||||
return _instanceFilterQuick;
|
||||
}
|
||||
set { _instanceFilterQuick = value; }
|
||||
}
|
||||
|
||||
// Indicates if class has instances enumerated
|
||||
public bool IsEnumerated { get; set; }
|
||||
|
||||
// Indicates if class is currently being enumerated
|
||||
public bool IsEnumerating { get; set; }
|
||||
|
||||
// Indicates if cancellation is requested for this class.
|
||||
public bool IsEnumerationCancelled { get; set; }
|
||||
|
||||
// Indicates if class has instances partially enumerated. This can occur if user cancels operation.
|
||||
public bool IsPartiallyEnumerated { get; set; }
|
||||
|
||||
public string NamespacePath
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_namespacePath == null)
|
||||
_namespacePath = Class.Scope.Path.Path;
|
||||
|
||||
return _namespacePath;
|
||||
}
|
||||
}
|
||||
|
||||
public string Path
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_path == null)
|
||||
_path = Class.Path.Path;
|
||||
return _path;
|
||||
}
|
||||
}
|
||||
|
||||
public string RelativePath
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_relativePath == null)
|
||||
_relativePath = Class.Path.RelativePath;
|
||||
|
||||
return _relativePath;
|
||||
}
|
||||
}
|
||||
|
||||
public void AddInstance(ListViewItem listItemInstance)
|
||||
{
|
||||
Instances.Add(listItemInstance);
|
||||
}
|
||||
|
||||
public string GetClassMof(bool bAmended = false)
|
||||
{
|
||||
Class.Options.UseAmendedQualifiers = bAmended;
|
||||
Class.Get();
|
||||
return Class.GetText(TextFormat.Mof).Replace("\n", "\r\n");
|
||||
}
|
||||
|
||||
public void ResetInstances()
|
||||
{
|
||||
InstanceCount = Instances.Count;
|
||||
Instances = new List<ListViewItem>();
|
||||
}
|
||||
}
|
||||
}
|
||||
50
WmiExplorer/Classes/WmiInstance.cs
Normal file
50
WmiExplorer/Classes/WmiInstance.cs
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
using System.Management;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
internal class WmiInstance
|
||||
{
|
||||
private string _path;
|
||||
private string _relativePath;
|
||||
|
||||
public WmiInstance(ManagementObject actualObject)
|
||||
{
|
||||
Instance = actualObject;
|
||||
}
|
||||
|
||||
public ManagementObject Instance { get; set; }
|
||||
|
||||
public string Path
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_path == null)
|
||||
_path = Instance.Path.Path;
|
||||
|
||||
return _path;
|
||||
}
|
||||
}
|
||||
|
||||
public string RelativePath
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_relativePath == null)
|
||||
_relativePath = Instance.Path.RelativePath;
|
||||
|
||||
return _relativePath;
|
||||
}
|
||||
}
|
||||
|
||||
public string GetInstanceMof(bool bAmended = false)
|
||||
{
|
||||
if (bAmended)
|
||||
Instance.Options.UseAmendedQualifiers = true;
|
||||
else
|
||||
Instance.Options.UseAmendedQualifiers = false;
|
||||
|
||||
Instance.Get();
|
||||
return Instance.GetText(TextFormat.Mof).Replace("\n", "\r\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
42
WmiExplorer/Classes/WmiMethod.cs
Normal file
42
WmiExplorer/Classes/WmiMethod.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System.Management;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
internal class WmiMethod
|
||||
{
|
||||
private string _description;
|
||||
private bool _isStatic;
|
||||
private string _methodName;
|
||||
private string _path;
|
||||
private MethodData _wmiMethod;
|
||||
|
||||
public WmiMethod(MethodData actualMethod)
|
||||
{
|
||||
_wmiMethod = actualMethod;
|
||||
}
|
||||
|
||||
public string Description
|
||||
{
|
||||
get { return _description; }
|
||||
set { _description = value; }
|
||||
}
|
||||
|
||||
public bool IsStatic
|
||||
{
|
||||
get { return _isStatic; }
|
||||
set { _isStatic = value; }
|
||||
}
|
||||
|
||||
public string MethodName
|
||||
{
|
||||
get { return _methodName; }
|
||||
set { _methodName = value; }
|
||||
}
|
||||
|
||||
public string Path
|
||||
{
|
||||
get { return _path; }
|
||||
set { _path = value; }
|
||||
}
|
||||
}
|
||||
}
|
||||
179
WmiExplorer/Classes/WmiNamespace.cs
Normal file
179
WmiExplorer/Classes/WmiNamespace.cs
Normal file
|
|
@ -0,0 +1,179 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Management;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
internal class WmiNamespace
|
||||
{
|
||||
public int ClassCount = 0;
|
||||
public List<ListViewItem> Classes = new List<ListViewItem>();
|
||||
private readonly ManagementObject _wmiNamespace;
|
||||
private string _classFilter; // Class Filter for current namespace
|
||||
private string _classFilterQuick; // Quick Filter for current namespace
|
||||
private string _displayName; // Display Name of the current namespace
|
||||
private string _enumerationStatus; // Class Enumeration status of current namespace
|
||||
private DateTime _enumTime; // Enumeration Time of current namespace
|
||||
private TimeSpan _enumTimeElapsed; // Time taken to enumerate classes for current namespace
|
||||
private bool _isRootNode; // Indicates if current namespace is the root node
|
||||
private string _path; // Path of the current namespace
|
||||
private string _relativePath; // Relative Path of current namespace
|
||||
private string _serverName; // Server name
|
||||
|
||||
public WmiNamespace(ManagementObject actualNamespace)
|
||||
{
|
||||
_wmiNamespace = actualNamespace;
|
||||
}
|
||||
|
||||
public string ClassFilter
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_classFilter == null)
|
||||
_classFilter = "%";
|
||||
|
||||
return _classFilter;
|
||||
}
|
||||
set { _classFilter = value; }
|
||||
}
|
||||
|
||||
public string ClassFilterQuick
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_classFilterQuick == null)
|
||||
_classFilterQuick = String.Empty;
|
||||
|
||||
return _classFilterQuick;
|
||||
}
|
||||
set { _classFilterQuick = value; }
|
||||
}
|
||||
|
||||
public string DisplayName
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_displayName == null)
|
||||
{
|
||||
if (IsRootNode)
|
||||
_displayName = _wmiNamespace.Scope.Path.Path.ToUpper();
|
||||
else
|
||||
_displayName = RelativePath;
|
||||
}
|
||||
return _displayName;
|
||||
}
|
||||
set { _displayName = value; }
|
||||
}
|
||||
|
||||
public string EnumerationStatus
|
||||
{
|
||||
get
|
||||
{
|
||||
if (String.IsNullOrEmpty(_enumerationStatus))
|
||||
_enumerationStatus = "NoError";
|
||||
|
||||
return _enumerationStatus;
|
||||
}
|
||||
set { _enumerationStatus = value; }
|
||||
}
|
||||
|
||||
public DateTime EnumTime
|
||||
{
|
||||
get { return _enumTime; }
|
||||
set { _enumTime = value; }
|
||||
}
|
||||
|
||||
public TimeSpan EnumTimeElapsed
|
||||
{
|
||||
get { return _enumTimeElapsed; }
|
||||
set { _enumTimeElapsed = value; }
|
||||
}
|
||||
|
||||
// Indicates if current namespace has classes enumerated
|
||||
public bool IsEnumerated { get; set; }
|
||||
|
||||
// Indicates if current namespace is currently being enumerated
|
||||
public bool IsEnumerating { get; set; }
|
||||
|
||||
// Indicates if cancellation is requested for this namespace.
|
||||
public bool IsEnumerationCancelled { get; set; }
|
||||
|
||||
// Indicates if current namespace has classes partially enumerated. This can occur if user cancels operation.
|
||||
public bool IsPartiallyEnumerated { get; set; }
|
||||
|
||||
public bool IsRootNode
|
||||
{
|
||||
get
|
||||
{
|
||||
// Namespace in root node has Path.Path set to Empty string
|
||||
if (String.IsNullOrEmpty(_wmiNamespace.Path.Path))
|
||||
_isRootNode = true;
|
||||
else
|
||||
_isRootNode = false;
|
||||
|
||||
return _isRootNode;
|
||||
}
|
||||
}
|
||||
|
||||
public string Path
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_path == null)
|
||||
{
|
||||
if (IsRootNode)
|
||||
_path = _wmiNamespace.Scope.Path.Path.ToUpper();
|
||||
else
|
||||
_path = "\\\\" + _wmiNamespace.Path.Server + "\\" + _wmiNamespace.GetPropertyValue("__Namespace") + "\\" + _wmiNamespace.GetPropertyValue("Name");
|
||||
}
|
||||
return _path;
|
||||
}
|
||||
}
|
||||
|
||||
public string RelativePath
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_relativePath == null)
|
||||
{
|
||||
if (IsRootNode)
|
||||
_relativePath = _wmiNamespace.Scope.Path.NamespacePath.ToUpper();
|
||||
else
|
||||
_relativePath = _wmiNamespace.GetPropertyValue("__NAMESPACE") + "\\" + _wmiNamespace.GetPropertyValue("Name");
|
||||
}
|
||||
return _relativePath;
|
||||
}
|
||||
}
|
||||
|
||||
public string ServerName
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_serverName == null)
|
||||
_serverName = _wmiNamespace.Scope.Path.Server;
|
||||
|
||||
return _serverName;
|
||||
}
|
||||
set { _serverName = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds new list item to _classes. Called by ObserverHandler when NewObject arrives.
|
||||
/// </summary>
|
||||
/// <param name="listItemClass"></param>
|
||||
public void AddClass(ListViewItem listItemClass)
|
||||
{
|
||||
Classes.Add(listItemClass);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Resets contents of _classes
|
||||
/// </summary>
|
||||
public void ResetClasses()
|
||||
{
|
||||
ClassCount = Classes.Count;
|
||||
Classes = new List<ListViewItem>();
|
||||
}
|
||||
}
|
||||
}
|
||||
68
WmiExplorer/Classes/WmiNode.cs
Normal file
68
WmiExplorer/Classes/WmiNode.cs
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
using System;
|
||||
using System.Management;
|
||||
using WmiExplorer.Sms;
|
||||
|
||||
namespace WmiExplorer.Classes
|
||||
{
|
||||
internal class WmiNode
|
||||
{
|
||||
private ConnectionOptions _connection;
|
||||
|
||||
private string _expansionStatus;
|
||||
|
||||
private string _userSpecifiedPath;
|
||||
|
||||
// Constructor to create Root Node
|
||||
public WmiNode()
|
||||
{
|
||||
}
|
||||
|
||||
// Constructor to create Wmi Node for the specified namespace
|
||||
public WmiNode(ManagementObject wmiNamespace)
|
||||
{
|
||||
WmiNamespace = new WmiNamespace(wmiNamespace);
|
||||
//_connection = wmiNamespace.Scope.Options;
|
||||
}
|
||||
|
||||
public ConnectionOptions Connection
|
||||
{
|
||||
get { return _connection; }
|
||||
}
|
||||
|
||||
public string ExpansionStatus
|
||||
{
|
||||
get
|
||||
{
|
||||
if (String.IsNullOrEmpty(_expansionStatus))
|
||||
_expansionStatus = "NoError";
|
||||
|
||||
return _expansionStatus;
|
||||
}
|
||||
set { _expansionStatus = value; }
|
||||
}
|
||||
|
||||
public bool IsConnected { get; set; }
|
||||
|
||||
public bool IsExpanded { get; set; }
|
||||
|
||||
public bool IsRootNode { get; set; }
|
||||
|
||||
public SmsClient SmsClient { get; set; }
|
||||
|
||||
public string UserSpecifiedPath
|
||||
{
|
||||
get { return _userSpecifiedPath; }
|
||||
set
|
||||
{
|
||||
_userSpecifiedPath = IsRootNode ? value : "NotApplicable";
|
||||
}
|
||||
}
|
||||
|
||||
public WmiNamespace WmiNamespace { get; set; }
|
||||
|
||||
public void SetConnection(ConnectionOptions value)
|
||||
{
|
||||
_connection = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
173
WmiExplorer/Forms/Form_About.Designer.cs
generated
Normal file
173
WmiExplorer/Forms/Form_About.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
namespace WmiExplorer.Forms
|
||||
{
|
||||
partial class Form_About
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form_About));
|
||||
this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.logoPictureBox = new System.Windows.Forms.PictureBox();
|
||||
this.labelProductName = new System.Windows.Forms.Label();
|
||||
this.labelVersion = new System.Windows.Forms.Label();
|
||||
this.labelCopyright = new System.Windows.Forms.Label();
|
||||
this.okButton = new System.Windows.Forms.Button();
|
||||
this.textBoxDescription = new System.Windows.Forms.TextBox();
|
||||
this.tableLayoutPanel.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tableLayoutPanel
|
||||
//
|
||||
this.tableLayoutPanel.ColumnCount = 2;
|
||||
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33F));
|
||||
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67F));
|
||||
this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0);
|
||||
this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0);
|
||||
this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1);
|
||||
this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2);
|
||||
this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5);
|
||||
this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4);
|
||||
this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel.Location = new System.Drawing.Point(9, 9);
|
||||
this.tableLayoutPanel.Name = "tableLayoutPanel";
|
||||
this.tableLayoutPanel.RowCount = 6;
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 56F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.Size = new System.Drawing.Size(416, 263);
|
||||
this.tableLayoutPanel.TabIndex = 0;
|
||||
//
|
||||
// logoPictureBox
|
||||
//
|
||||
this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.logoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("logoPictureBox.Image")));
|
||||
this.logoPictureBox.Location = new System.Drawing.Point(3, 3);
|
||||
this.logoPictureBox.Name = "logoPictureBox";
|
||||
this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6);
|
||||
this.logoPictureBox.Size = new System.Drawing.Size(131, 257);
|
||||
this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.logoPictureBox.TabIndex = 12;
|
||||
this.logoPictureBox.TabStop = false;
|
||||
//
|
||||
// labelProductName
|
||||
//
|
||||
this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.labelProductName.Location = new System.Drawing.Point(143, 0);
|
||||
this.labelProductName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
||||
this.labelProductName.MaximumSize = new System.Drawing.Size(0, 17);
|
||||
this.labelProductName.Name = "labelProductName";
|
||||
this.labelProductName.Size = new System.Drawing.Size(270, 17);
|
||||
this.labelProductName.TabIndex = 19;
|
||||
this.labelProductName.Text = "Product Name";
|
||||
this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// labelVersion
|
||||
//
|
||||
this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.labelVersion.Location = new System.Drawing.Point(143, 26);
|
||||
this.labelVersion.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
||||
this.labelVersion.MaximumSize = new System.Drawing.Size(0, 17);
|
||||
this.labelVersion.Name = "labelVersion";
|
||||
this.labelVersion.Size = new System.Drawing.Size(270, 17);
|
||||
this.labelVersion.TabIndex = 0;
|
||||
this.labelVersion.Text = "Version";
|
||||
this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// labelCopyright
|
||||
//
|
||||
this.labelCopyright.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.labelCopyright.Location = new System.Drawing.Point(143, 52);
|
||||
this.labelCopyright.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
||||
this.labelCopyright.MaximumSize = new System.Drawing.Size(0, 17);
|
||||
this.labelCopyright.Name = "labelCopyright";
|
||||
this.labelCopyright.Size = new System.Drawing.Size(270, 17);
|
||||
this.labelCopyright.TabIndex = 21;
|
||||
this.labelCopyright.Text = "Copyright";
|
||||
this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// okButton
|
||||
//
|
||||
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.okButton.Location = new System.Drawing.Point(338, 238);
|
||||
this.okButton.Name = "okButton";
|
||||
this.okButton.Size = new System.Drawing.Size(75, 22);
|
||||
this.okButton.TabIndex = 24;
|
||||
this.okButton.Text = "&OK";
|
||||
//
|
||||
// textBoxDescription
|
||||
//
|
||||
this.textBoxDescription.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.textBoxDescription.Location = new System.Drawing.Point(143, 91);
|
||||
this.textBoxDescription.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
|
||||
this.textBoxDescription.Multiline = true;
|
||||
this.textBoxDescription.Name = "textBoxDescription";
|
||||
this.textBoxDescription.ReadOnly = true;
|
||||
this.textBoxDescription.Size = new System.Drawing.Size(270, 141);
|
||||
this.textBoxDescription.TabIndex = 23;
|
||||
this.textBoxDescription.TabStop = false;
|
||||
this.textBoxDescription.Text = resources.GetString("textBoxDescription.Text");
|
||||
//
|
||||
// Form_About
|
||||
//
|
||||
this.AcceptButton = this.okButton;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.AutoSize = true;
|
||||
this.CancelButton = this.okButton;
|
||||
this.ClientSize = new System.Drawing.Size(434, 281);
|
||||
this.Controls.Add(this.tableLayoutPanel);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "Form_About";
|
||||
this.Padding = new System.Windows.Forms.Padding(9);
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "Form_About";
|
||||
this.tableLayoutPanel.ResumeLayout(false);
|
||||
this.tableLayoutPanel.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
|
||||
private System.Windows.Forms.PictureBox logoPictureBox;
|
||||
private System.Windows.Forms.Label labelProductName;
|
||||
private System.Windows.Forms.Label labelVersion;
|
||||
private System.Windows.Forms.Label labelCopyright;
|
||||
private System.Windows.Forms.TextBox textBoxDescription;
|
||||
private System.Windows.Forms.Button okButton;
|
||||
}
|
||||
}
|
||||
100
WmiExplorer/Forms/Form_About.cs
Normal file
100
WmiExplorer/Forms/Form_About.cs
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
using System;
|
||||
using System.Reflection;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace WmiExplorer.Forms
|
||||
{
|
||||
partial class Form_About : Form
|
||||
{
|
||||
public Form_About()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Text = String.Format("About {0}", AssemblyTitle);
|
||||
this.labelProductName.Text = AssemblyProduct;
|
||||
this.labelVersion.Text = String.Format("Version {0}", AssemblyVersion);
|
||||
this.labelCopyright.Text = AssemblyCopyright;
|
||||
//this.labelCompanyName.Text = AssemblyCompany;
|
||||
//this.textBoxDescription.Text = AssemblyDescription;
|
||||
}
|
||||
|
||||
#region Assembly Attribute Accessors
|
||||
|
||||
public string AssemblyTitle
|
||||
{
|
||||
get
|
||||
{
|
||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
|
||||
if (attributes.Length > 0)
|
||||
{
|
||||
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
|
||||
if (titleAttribute.Title != "")
|
||||
{
|
||||
return titleAttribute.Title;
|
||||
}
|
||||
}
|
||||
return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
|
||||
}
|
||||
}
|
||||
|
||||
public string AssemblyVersion
|
||||
{
|
||||
get
|
||||
{
|
||||
return Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public string AssemblyDescription
|
||||
{
|
||||
get
|
||||
{
|
||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
|
||||
if (attributes.Length == 0)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
return ((AssemblyDescriptionAttribute)attributes[0]).Description;
|
||||
}
|
||||
}
|
||||
|
||||
public string AssemblyProduct
|
||||
{
|
||||
get
|
||||
{
|
||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
|
||||
if (attributes.Length == 0)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
return ((AssemblyProductAttribute)attributes[0]).Product;
|
||||
}
|
||||
}
|
||||
|
||||
public string AssemblyCopyright
|
||||
{
|
||||
get
|
||||
{
|
||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
|
||||
if (attributes.Length == 0)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
|
||||
}
|
||||
}
|
||||
|
||||
public string AssemblyCompany
|
||||
{
|
||||
get
|
||||
{
|
||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
|
||||
if (attributes.Length == 0)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
return ((AssemblyCompanyAttribute)attributes[0]).Company;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
610
WmiExplorer/Forms/Form_About.resx
Normal file
610
WmiExplorer/Forms/Form_About.resx
Normal file
|
|
@ -0,0 +1,610 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="logoPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="textBoxDescription.Text" xml:space="preserve">
|
||||
<value>WMI Explorer is a utility intended to provide the ability to browse and view WMI objects in a single pane of view.
|
||||
|
||||
This application is written by Vinay Pamnani and is provided without any warranties or support. Special thanks to Tim Helton for his guidance and support.
|
||||
|
||||
For feedback/suggestions/bugs, please post on https://github.com/vinaypamnani/wmie2/issues</value>
|
||||
</data>
|
||||
</root>
|
||||
169
WmiExplorer/Forms/Form_ConnectAs.Designer.cs
generated
Normal file
169
WmiExplorer/Forms/Form_ConnectAs.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
namespace WmiExplorer.Forms
|
||||
{
|
||||
partial class Form_ConnectAs
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.buttonCancel = new System.Windows.Forms.Button();
|
||||
this.buttonConnect = new System.Windows.Forms.Button();
|
||||
this.labelPassword = new System.Windows.Forms.Label();
|
||||
this.textBoxPassword = new System.Windows.Forms.TextBox();
|
||||
this.labelUsername = new System.Windows.Forms.Label();
|
||||
this.textBoxUsername = new System.Windows.Forms.TextBox();
|
||||
this.labelPath = new System.Windows.Forms.Label();
|
||||
this.textBoxPath = new System.Windows.Forms.TextBox();
|
||||
this.labelDescription = new System.Windows.Forms.Label();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// buttonCancel
|
||||
//
|
||||
this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.buttonCancel.Location = new System.Drawing.Point(15, 178);
|
||||
this.buttonCancel.Margin = new System.Windows.Forms.Padding(10);
|
||||
this.buttonCancel.Name = "buttonCancel";
|
||||
this.buttonCancel.Size = new System.Drawing.Size(108, 23);
|
||||
this.buttonCancel.TabIndex = 4;
|
||||
this.buttonCancel.Text = "Cancel";
|
||||
this.buttonCancel.UseVisualStyleBackColor = true;
|
||||
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
|
||||
//
|
||||
// buttonConnect
|
||||
//
|
||||
this.buttonConnect.Location = new System.Drawing.Point(259, 178);
|
||||
this.buttonConnect.Margin = new System.Windows.Forms.Padding(10);
|
||||
this.buttonConnect.Name = "buttonConnect";
|
||||
this.buttonConnect.Size = new System.Drawing.Size(113, 23);
|
||||
this.buttonConnect.TabIndex = 3;
|
||||
this.buttonConnect.Text = "Connect";
|
||||
this.buttonConnect.UseVisualStyleBackColor = true;
|
||||
this.buttonConnect.Click += new System.EventHandler(this.buttonOk_Click);
|
||||
//
|
||||
// labelPassword
|
||||
//
|
||||
this.labelPassword.AutoSize = true;
|
||||
this.labelPassword.Location = new System.Drawing.Point(12, 129);
|
||||
this.labelPassword.Name = "labelPassword";
|
||||
this.labelPassword.Size = new System.Drawing.Size(56, 13);
|
||||
this.labelPassword.TabIndex = 18;
|
||||
this.labelPassword.Text = "Password:";
|
||||
//
|
||||
// textBoxPassword
|
||||
//
|
||||
this.textBoxPassword.Location = new System.Drawing.Point(15, 146);
|
||||
this.textBoxPassword.Name = "textBoxPassword";
|
||||
this.textBoxPassword.Size = new System.Drawing.Size(357, 20);
|
||||
this.textBoxPassword.TabIndex = 2;
|
||||
this.textBoxPassword.UseSystemPasswordChar = true;
|
||||
//
|
||||
// labelUsername
|
||||
//
|
||||
this.labelUsername.AutoSize = true;
|
||||
this.labelUsername.Location = new System.Drawing.Point(12, 86);
|
||||
this.labelUsername.Name = "labelUsername";
|
||||
this.labelUsername.Size = new System.Drawing.Size(169, 13);
|
||||
this.labelUsername.TabIndex = 16;
|
||||
this.labelUsername.Text = "Username (DOMAIN\\User format):";
|
||||
//
|
||||
// textBoxUsername
|
||||
//
|
||||
this.textBoxUsername.Location = new System.Drawing.Point(15, 103);
|
||||
this.textBoxUsername.Name = "textBoxUsername";
|
||||
this.textBoxUsername.Size = new System.Drawing.Size(357, 20);
|
||||
this.textBoxUsername.TabIndex = 1;
|
||||
//
|
||||
// labelPath
|
||||
//
|
||||
this.labelPath.AutoSize = true;
|
||||
this.labelPath.Location = new System.Drawing.Point(12, 43);
|
||||
this.labelPath.Name = "labelPath";
|
||||
this.labelPath.Size = new System.Drawing.Size(122, 13);
|
||||
this.labelPath.TabIndex = 14;
|
||||
this.labelPath.Text = "Remote Computer/Path:";
|
||||
//
|
||||
// textBoxPath
|
||||
//
|
||||
this.textBoxPath.Location = new System.Drawing.Point(15, 60);
|
||||
this.textBoxPath.Name = "textBoxPath";
|
||||
this.textBoxPath.Size = new System.Drawing.Size(357, 20);
|
||||
this.textBoxPath.TabIndex = 0;
|
||||
//
|
||||
// labelDescription
|
||||
//
|
||||
this.labelDescription.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.labelDescription.Location = new System.Drawing.Point(12, 9);
|
||||
this.labelDescription.Name = "labelDescription";
|
||||
this.labelDescription.Size = new System.Drawing.Size(360, 36);
|
||||
this.labelDescription.TabIndex = 5;
|
||||
this.labelDescription.Text = "Connect to a remote computer/path using Alternate Credentials. Alternate Credenti" +
|
||||
"als can only be used for remote connections.";
|
||||
//
|
||||
// Form_ConnectAs
|
||||
//
|
||||
this.AcceptButton = this.buttonConnect;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.AutoSize = true;
|
||||
this.CancelButton = this.buttonCancel;
|
||||
this.ClientSize = new System.Drawing.Size(384, 211);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.buttonConnect);
|
||||
this.Controls.Add(this.buttonCancel);
|
||||
this.Controls.Add(this.textBoxPassword);
|
||||
this.Controls.Add(this.labelPassword);
|
||||
this.Controls.Add(this.textBoxUsername);
|
||||
this.Controls.Add(this.labelUsername);
|
||||
this.Controls.Add(this.textBoxPath);
|
||||
this.Controls.Add(this.labelPath);
|
||||
this.Controls.Add(this.labelDescription);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "Form_ConnectAs";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "Connect As...";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button buttonCancel;
|
||||
private System.Windows.Forms.Button buttonConnect;
|
||||
private System.Windows.Forms.Label labelPassword;
|
||||
private System.Windows.Forms.TextBox textBoxPassword;
|
||||
private System.Windows.Forms.Label labelUsername;
|
||||
private System.Windows.Forms.TextBox textBoxUsername;
|
||||
private System.Windows.Forms.Label labelPath;
|
||||
private System.Windows.Forms.TextBox textBoxPath;
|
||||
private System.Windows.Forms.Label labelDescription;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
63
WmiExplorer/Forms/Form_ConnectAs.cs
Normal file
63
WmiExplorer/Forms/Form_ConnectAs.cs
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
using System;
|
||||
using System.Management;
|
||||
using System.Windows.Forms;
|
||||
using WmiExplorer.Classes;
|
||||
|
||||
namespace WmiExplorer.Forms
|
||||
{
|
||||
public partial class Form_ConnectAs : Form
|
||||
{
|
||||
public ConnectionOptions Connection;
|
||||
public string Path;
|
||||
public bool Cancelled;
|
||||
|
||||
public Form_ConnectAs(string path = "")
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
if (!String.IsNullOrEmpty(path))
|
||||
{
|
||||
textBoxPath.Text = path;
|
||||
textBoxPath.ReadOnly = true;
|
||||
textBoxUsername.Select();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void buttonOk_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (String.IsNullOrEmpty(textBoxPath.Text))
|
||||
{
|
||||
MessageBox.Show("No path specified. Please specify a remote computer/path to connect to. ",
|
||||
"Invalid Path", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
Path = textBoxPath.Text.ToUpperInvariant();
|
||||
Connection = new ConnectionOptions
|
||||
{
|
||||
EnablePrivileges = true,
|
||||
Impersonation = ImpersonationLevel.Impersonate,
|
||||
Authentication = AuthenticationLevel.Default,
|
||||
Username = textBoxUsername.Text,
|
||||
SecurePassword = textBoxPassword.Text.StringToSecureString()
|
||||
};
|
||||
|
||||
if (String.IsNullOrEmpty(textBoxUsername.Text))
|
||||
{
|
||||
MessageBox.Show("No username specified. Logged on user's credentials will be used. ",
|
||||
"Invalid Credentials", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
Connection.Username = null;
|
||||
Connection.SecurePassword = null;
|
||||
}
|
||||
|
||||
Close();
|
||||
}
|
||||
|
||||
private void buttonCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
Cancelled = true;
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
120
WmiExplorer/Forms/Form_ConnectAs.resx
Normal file
120
WmiExplorer/Forms/Form_ConnectAs.resx
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
101
WmiExplorer/Forms/Form_DisplayText.Designer.cs
generated
Normal file
101
WmiExplorer/Forms/Form_DisplayText.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
namespace WmiExplorer.Forms
|
||||
{
|
||||
partial class Form_DisplayText
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.buttonOk = new System.Windows.Forms.Button();
|
||||
this.richTextBox = new System.Windows.Forms.RichTextBox();
|
||||
this.labelCaption = new System.Windows.Forms.Label();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// buttonOk
|
||||
//
|
||||
this.buttonOk.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
|
||||
this.buttonOk.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.buttonOk.Location = new System.Drawing.Point(194, 249);
|
||||
this.buttonOk.Name = "buttonOk";
|
||||
this.buttonOk.Size = new System.Drawing.Size(100, 25);
|
||||
this.buttonOk.TabIndex = 2;
|
||||
this.buttonOk.Text = "OK";
|
||||
this.buttonOk.UseVisualStyleBackColor = true;
|
||||
this.buttonOk.Click += new System.EventHandler(this.buttonOk_Click);
|
||||
//
|
||||
// richTextBox
|
||||
//
|
||||
this.richTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.richTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.richTextBox.Location = new System.Drawing.Point(12, 49);
|
||||
this.richTextBox.Name = "richTextBox";
|
||||
this.richTextBox.ReadOnly = true;
|
||||
this.richTextBox.Size = new System.Drawing.Size(470, 194);
|
||||
this.richTextBox.TabIndex = 3;
|
||||
this.richTextBox.Text = "";
|
||||
this.richTextBox.WordWrap = false;
|
||||
//
|
||||
// labelCaption
|
||||
//
|
||||
this.labelCaption.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.labelCaption.BackColor = System.Drawing.Color.LightSteelBlue;
|
||||
this.labelCaption.Location = new System.Drawing.Point(0, 0);
|
||||
this.labelCaption.Name = "labelCaption";
|
||||
this.labelCaption.Padding = new System.Windows.Forms.Padding(5);
|
||||
this.labelCaption.Size = new System.Drawing.Size(488, 35);
|
||||
this.labelCaption.TabIndex = 5;
|
||||
this.labelCaption.Text = "Title";
|
||||
this.labelCaption.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// Form_DisplayText
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.CancelButton = this.buttonOk;
|
||||
this.ClientSize = new System.Drawing.Size(484, 286);
|
||||
this.Controls.Add(this.labelCaption);
|
||||
this.Controls.Add(this.richTextBox);
|
||||
this.Controls.Add(this.buttonOk);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
|
||||
this.Name = "Form_DisplayText";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "Form_DisplayText";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button buttonOk;
|
||||
private System.Windows.Forms.RichTextBox richTextBox;
|
||||
private System.Windows.Forms.Label labelCaption;
|
||||
}
|
||||
}
|
||||
28
WmiExplorer/Forms/Form_DisplayText.cs
Normal file
28
WmiExplorer/Forms/Form_DisplayText.cs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace WmiExplorer.Forms
|
||||
{
|
||||
public partial class Form_DisplayText : Form
|
||||
{
|
||||
public Form_DisplayText(string windowTitle, string caption, string text)
|
||||
{
|
||||
InitializeComponent();
|
||||
labelCaption.Font = new Font("Arial", 10, FontStyle.Bold);
|
||||
Text = windowTitle;
|
||||
labelCaption.Text = caption;
|
||||
richTextBox.Text = text;
|
||||
}
|
||||
|
||||
private void buttonOk_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
120
WmiExplorer/Forms/Form_DisplayText.resx
Normal file
120
WmiExplorer/Forms/Form_DisplayText.resx
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
224
WmiExplorer/Forms/Form_ExecMethod.Designer.cs
generated
Normal file
224
WmiExplorer/Forms/Form_ExecMethod.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,224 @@
|
|||
namespace WmiExplorer.Forms
|
||||
{
|
||||
partial class Form_ExecMethod
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.groupBoxInParams = new System.Windows.Forms.GroupBox();
|
||||
this.panelInParams = new System.Windows.Forms.Panel();
|
||||
this.labelInput = new System.Windows.Forms.Label();
|
||||
this.groupBoxOutParams = new System.Windows.Forms.GroupBox();
|
||||
this.propertyGridOutParams = new System.Windows.Forms.PropertyGrid();
|
||||
this.panelButtons = new System.Windows.Forms.Panel();
|
||||
this.buttonClose = new System.Windows.Forms.Button();
|
||||
this.buttonCopyOutput = new System.Windows.Forms.Button();
|
||||
this.buttonExecute = new System.Windows.Forms.Button();
|
||||
this.statusStrip = new System.Windows.Forms.StatusStrip();
|
||||
this.toolStripLabel = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.labelCaption = new System.Windows.Forms.Label();
|
||||
this.groupBoxInParams.SuspendLayout();
|
||||
this.panelInParams.SuspendLayout();
|
||||
this.groupBoxOutParams.SuspendLayout();
|
||||
this.panelButtons.SuspendLayout();
|
||||
this.statusStrip.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// groupBoxInParams
|
||||
//
|
||||
this.groupBoxInParams.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBoxInParams.Controls.Add(this.panelInParams);
|
||||
this.groupBoxInParams.Location = new System.Drawing.Point(12, 48);
|
||||
this.groupBoxInParams.Name = "groupBoxInParams";
|
||||
this.groupBoxInParams.Size = new System.Drawing.Size(410, 54);
|
||||
this.groupBoxInParams.TabIndex = 0;
|
||||
this.groupBoxInParams.TabStop = false;
|
||||
this.groupBoxInParams.Text = "Input Parameters";
|
||||
//
|
||||
// panelInParams
|
||||
//
|
||||
this.panelInParams.AutoScroll = true;
|
||||
this.panelInParams.Controls.Add(this.labelInput);
|
||||
this.panelInParams.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panelInParams.Location = new System.Drawing.Point(3, 16);
|
||||
this.panelInParams.Name = "panelInParams";
|
||||
this.panelInParams.Size = new System.Drawing.Size(404, 35);
|
||||
this.panelInParams.TabIndex = 0;
|
||||
//
|
||||
// labelInput
|
||||
//
|
||||
this.labelInput.AutoSize = true;
|
||||
this.labelInput.Location = new System.Drawing.Point(3, 5);
|
||||
this.labelInput.Name = "labelInput";
|
||||
this.labelInput.Size = new System.Drawing.Size(157, 13);
|
||||
this.labelInput.TabIndex = 0;
|
||||
this.labelInput.Text = "Specify Input Parameter values:";
|
||||
//
|
||||
// groupBoxOutParams
|
||||
//
|
||||
this.groupBoxOutParams.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBoxOutParams.Controls.Add(this.propertyGridOutParams);
|
||||
this.groupBoxOutParams.Location = new System.Drawing.Point(12, 108);
|
||||
this.groupBoxOutParams.Name = "groupBoxOutParams";
|
||||
this.groupBoxOutParams.Size = new System.Drawing.Size(410, 150);
|
||||
this.groupBoxOutParams.TabIndex = 1;
|
||||
this.groupBoxOutParams.TabStop = false;
|
||||
this.groupBoxOutParams.Text = "Output Parameters";
|
||||
//
|
||||
// propertyGridOutParams
|
||||
//
|
||||
this.propertyGridOutParams.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.propertyGridOutParams.HelpVisible = false;
|
||||
this.propertyGridOutParams.Location = new System.Drawing.Point(3, 16);
|
||||
this.propertyGridOutParams.Name = "propertyGridOutParams";
|
||||
this.propertyGridOutParams.Size = new System.Drawing.Size(404, 131);
|
||||
this.propertyGridOutParams.TabIndex = 0;
|
||||
this.propertyGridOutParams.TabStop = false;
|
||||
this.propertyGridOutParams.ToolbarVisible = false;
|
||||
//
|
||||
// panelButtons
|
||||
//
|
||||
this.panelButtons.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.panelButtons.Controls.Add(this.buttonClose);
|
||||
this.panelButtons.Controls.Add(this.buttonCopyOutput);
|
||||
this.panelButtons.Controls.Add(this.buttonExecute);
|
||||
this.panelButtons.Location = new System.Drawing.Point(12, 257);
|
||||
this.panelButtons.Name = "panelButtons";
|
||||
this.panelButtons.Size = new System.Drawing.Size(410, 42);
|
||||
this.panelButtons.TabIndex = 2;
|
||||
//
|
||||
// buttonClose
|
||||
//
|
||||
this.buttonClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.buttonClose.Location = new System.Drawing.Point(329, 9);
|
||||
this.buttonClose.Name = "buttonClose";
|
||||
this.buttonClose.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonClose.TabIndex = 2;
|
||||
this.buttonClose.Text = "Close";
|
||||
this.buttonClose.UseVisualStyleBackColor = true;
|
||||
this.buttonClose.Click += new System.EventHandler(this.buttonClose_Click);
|
||||
//
|
||||
// buttonCopyOutput
|
||||
//
|
||||
this.buttonCopyOutput.Location = new System.Drawing.Point(166, 9);
|
||||
this.buttonCopyOutput.Name = "buttonCopyOutput";
|
||||
this.buttonCopyOutput.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonCopyOutput.TabIndex = 1;
|
||||
this.buttonCopyOutput.Text = "Copy Output";
|
||||
this.buttonCopyOutput.UseVisualStyleBackColor = true;
|
||||
this.buttonCopyOutput.Click += new System.EventHandler(this.buttonCopyOutput_Click);
|
||||
//
|
||||
// buttonExecute
|
||||
//
|
||||
this.buttonExecute.Location = new System.Drawing.Point(248, 9);
|
||||
this.buttonExecute.Name = "buttonExecute";
|
||||
this.buttonExecute.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonExecute.TabIndex = 0;
|
||||
this.buttonExecute.Text = "Execute";
|
||||
this.buttonExecute.UseVisualStyleBackColor = true;
|
||||
this.buttonExecute.Click += new System.EventHandler(this.buttonExecute_Click);
|
||||
//
|
||||
// statusStrip
|
||||
//
|
||||
this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripLabel});
|
||||
this.statusStrip.Location = new System.Drawing.Point(0, 300);
|
||||
this.statusStrip.Name = "statusStrip";
|
||||
this.statusStrip.Size = new System.Drawing.Size(434, 22);
|
||||
this.statusStrip.SizingGrip = false;
|
||||
this.statusStrip.TabIndex = 3;
|
||||
this.statusStrip.Text = "statusStrip1";
|
||||
//
|
||||
// toolStripLabel
|
||||
//
|
||||
this.toolStripLabel.Name = "toolStripLabel";
|
||||
this.toolStripLabel.Size = new System.Drawing.Size(112, 17);
|
||||
this.toolStripLabel.Text = "toolStripStatusLabel";
|
||||
//
|
||||
// labelCaption
|
||||
//
|
||||
this.labelCaption.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.labelCaption.BackColor = System.Drawing.Color.LightSteelBlue;
|
||||
this.labelCaption.Location = new System.Drawing.Point(0, -1);
|
||||
this.labelCaption.Name = "labelCaption";
|
||||
this.labelCaption.Padding = new System.Windows.Forms.Padding(5);
|
||||
this.labelCaption.Size = new System.Drawing.Size(434, 46);
|
||||
this.labelCaption.TabIndex = 4;
|
||||
this.labelCaption.Text = "Title";
|
||||
this.labelCaption.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// Form_ExecMethod
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.AutoSize = true;
|
||||
this.CancelButton = this.buttonClose;
|
||||
this.ClientSize = new System.Drawing.Size(434, 322);
|
||||
this.Controls.Add(this.labelCaption);
|
||||
this.Controls.Add(this.statusStrip);
|
||||
this.Controls.Add(this.panelButtons);
|
||||
this.Controls.Add(this.groupBoxOutParams);
|
||||
this.Controls.Add(this.groupBoxInParams);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "Form_ExecMethod";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "Execute Method ";
|
||||
this.groupBoxInParams.ResumeLayout(false);
|
||||
this.panelInParams.ResumeLayout(false);
|
||||
this.panelInParams.PerformLayout();
|
||||
this.groupBoxOutParams.ResumeLayout(false);
|
||||
this.panelButtons.ResumeLayout(false);
|
||||
this.statusStrip.ResumeLayout(false);
|
||||
this.statusStrip.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox groupBoxInParams;
|
||||
private System.Windows.Forms.Panel panelInParams;
|
||||
private System.Windows.Forms.Label labelInput;
|
||||
private System.Windows.Forms.GroupBox groupBoxOutParams;
|
||||
private System.Windows.Forms.PropertyGrid propertyGridOutParams;
|
||||
private System.Windows.Forms.Panel panelButtons;
|
||||
private System.Windows.Forms.Button buttonClose;
|
||||
private System.Windows.Forms.Button buttonCopyOutput;
|
||||
private System.Windows.Forms.Button buttonExecute;
|
||||
private System.Windows.Forms.StatusStrip statusStrip;
|
||||
private System.Windows.Forms.ToolStripStatusLabel toolStripLabel;
|
||||
private System.Windows.Forms.Label labelCaption;
|
||||
}
|
||||
}
|
||||
324
WmiExplorer/Forms/Form_ExecMethod.cs
Normal file
324
WmiExplorer/Forms/Form_ExecMethod.cs
Normal file
|
|
@ -0,0 +1,324 @@
|
|||
using System;
|
||||
using System.Drawing;
|
||||
using System.Management;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows.Forms;
|
||||
using WmiExplorer.Classes;
|
||||
|
||||
namespace WmiExplorer.Forms
|
||||
{
|
||||
public partial class Form_ExecMethod : Form
|
||||
{
|
||||
private ManagementObject _mObject;
|
||||
private MethodData _method;
|
||||
private string _clipboardText = String.Empty;
|
||||
|
||||
public Form_ExecMethod(ManagementObject mObject, MethodData method)
|
||||
{
|
||||
_mObject = mObject;
|
||||
_method = method;
|
||||
InitializeComponent();
|
||||
//InitializeUi();
|
||||
InitializeForm();
|
||||
|
||||
}
|
||||
|
||||
private void InitializeForm()
|
||||
{
|
||||
// Update Form Title
|
||||
labelCaption.Text = _method.Name + " Method for \n" + _mObject.ClassPath.Path;
|
||||
toolStripLabel.Text = String.Empty;
|
||||
|
||||
// Populate Input Parameters
|
||||
if (_method.InParameters == null ||_method.InParameters.Properties.Count == 0)
|
||||
{
|
||||
labelInput.Text = "This method doesn't have any Input Parameters.";
|
||||
}
|
||||
else
|
||||
{
|
||||
Label[] label = new Label[_method.InParameters.Properties.Count];
|
||||
TextBox[] textBox = new TextBox[_method.InParameters.Properties.Count];
|
||||
Control[] paramControls = new Control[_method.InParameters.Properties.Count];
|
||||
|
||||
var i = 0;
|
||||
var maxLabelWidth = 0;
|
||||
foreach (PropertyData inParam in _method.InParameters.Properties)
|
||||
{
|
||||
// Create a label
|
||||
label[i] = new Label
|
||||
{
|
||||
AutoSize = true,
|
||||
TextAlign = ContentAlignment.MiddleLeft,
|
||||
Text = inParam.Name + " (" + inParam.Type + ") :"
|
||||
};
|
||||
|
||||
// Set location appropriately for the first property
|
||||
if (i == 0)
|
||||
{
|
||||
label[i].Location = new Point(6, labelInput.Bottom + 10);
|
||||
}
|
||||
else
|
||||
{
|
||||
label[i].Location = new Point(6, label[i-1].Bottom + 15);
|
||||
}
|
||||
|
||||
// Set Max Label width
|
||||
if (label[i].PreferredWidth > maxLabelWidth)
|
||||
maxLabelWidth = label[i].PreferredWidth;
|
||||
|
||||
// Create a new textbox or checkbox depending on type
|
||||
|
||||
if (inParam.Type == CimType.Boolean)
|
||||
{
|
||||
paramControls[i] = new CheckBox
|
||||
{
|
||||
Text = String.Empty,
|
||||
Tag = inParam.Name,
|
||||
Checked = false
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
if (inParam.Type == CimType.Object || inParam.Type == CimType.Reference)
|
||||
{
|
||||
paramControls[i] = new TextBox
|
||||
{
|
||||
Text = "Object parameter not supported",
|
||||
ReadOnly = true,
|
||||
Tag = inParam.Name
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
paramControls[i] = new TextBox
|
||||
{
|
||||
Text = String.Empty,
|
||||
Tag = inParam.Name
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Add controls to Panel
|
||||
panelInParams.Controls.Add(label[i]);
|
||||
panelInParams.Controls.Add(paramControls[i]);
|
||||
|
||||
// Resize groupbox to adjust for the new property. Stop resizing after 5 properties.
|
||||
if (i < 5)
|
||||
groupBoxInParams.Height += (label[i].Height * 2);
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
// Set textbox location now that we have the max Label width
|
||||
for (i = 0; i < _method.InParameters.Properties.Count; i++)
|
||||
{
|
||||
if (paramControls[i] is TextBox)
|
||||
{
|
||||
paramControls[i].Location = new Point(maxLabelWidth + 15, label[i].Top - 3);
|
||||
paramControls[i].Width = panelInParams.Width - (maxLabelWidth + 40);
|
||||
}
|
||||
|
||||
if (paramControls[i] is CheckBox)
|
||||
{
|
||||
paramControls[i].Location = new Point(maxLabelWidth + 15, label[i].Top - 3);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Reposition controls
|
||||
groupBoxOutParams.Location = new Point(groupBoxInParams.Left, groupBoxInParams.Bottom + 3);
|
||||
panelButtons.Location = new Point(groupBoxOutParams.Left, groupBoxOutParams.Bottom + 3);
|
||||
|
||||
// Resize form
|
||||
this.Size = new Size(this.Width, labelCaption.Height + groupBoxInParams.Height + groupBoxOutParams.Height + panelButtons.Height + statusStrip.Height + 50);
|
||||
|
||||
}
|
||||
|
||||
private void InitializeUi()
|
||||
{
|
||||
Label[] label = new Label[10];
|
||||
TextBox[] textBox = new TextBox[10];
|
||||
|
||||
// Add Input Parameters
|
||||
for (var i = 1; i <= 7; i++)
|
||||
{
|
||||
if (i == 1)
|
||||
{
|
||||
label[i] = new Label
|
||||
{
|
||||
Location = new Point(6, labelInput.Bottom + 10),
|
||||
AutoSize = true,
|
||||
TextAlign = ContentAlignment.MiddleLeft,
|
||||
Text = "Property Name: "
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
label[i] = new Label
|
||||
{
|
||||
Location = new Point(6, label[i-1].Bottom + 15),
|
||||
AutoSize = true,
|
||||
TextAlign = ContentAlignment.MiddleLeft,
|
||||
Text = "Property Name: "
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
textBox[i] = new TextBox
|
||||
{
|
||||
Location = new Point(label[i].Width + 30, label[i].Top - 3),
|
||||
Width = 200,
|
||||
Text = String.Empty
|
||||
};
|
||||
|
||||
panelInParams.Controls.Add(label[i]);
|
||||
panelInParams.Controls.Add(textBox[i]);
|
||||
|
||||
groupBoxInParams.Height += (label[i].Height * 2);
|
||||
|
||||
}
|
||||
|
||||
// Add Output Parameters
|
||||
|
||||
GroupBox groupBoxOutParamsTest = new GroupBox();
|
||||
groupBoxOutParamsTest.Location = new Point(groupBoxInParams.Left, groupBoxInParams.Bottom + 10);
|
||||
groupBoxOutParamsTest.Size = new Size(groupBoxInParams.Width, 150);
|
||||
groupBoxOutParamsTest.Text = "Output Parameters";
|
||||
|
||||
PropertyGrid outParamsPropertyGrid = new PropertyGrid();
|
||||
outParamsPropertyGrid.Dock = DockStyle.Fill;
|
||||
outParamsPropertyGrid.HelpVisible = false;
|
||||
outParamsPropertyGrid.ToolbarVisible = false;
|
||||
|
||||
groupBoxOutParamsTest.Controls.Add(outParamsPropertyGrid);
|
||||
this.Controls.Add(groupBoxOutParamsTest);
|
||||
|
||||
// Resize form
|
||||
this.Size = new Size(this.Width, groupBoxInParams.Height + groupBoxOutParamsTest.Height + 25);
|
||||
|
||||
}
|
||||
|
||||
private void buttonClose_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void buttonExecute_Click(object sender, EventArgs e)
|
||||
{
|
||||
ExecuteMethod();
|
||||
}
|
||||
|
||||
private void ExecuteMethod()
|
||||
{
|
||||
string returnString = String.Empty;
|
||||
try
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
SetStatusBar("Executing method...", MessageCategory.Action);
|
||||
|
||||
ManagementBaseObject inParams = _mObject.GetMethodParameters(_method.Name);
|
||||
|
||||
foreach (Control control in panelInParams.Controls)
|
||||
{
|
||||
if (control is TextBox)
|
||||
{
|
||||
inParams[control.Tag.ToString()] = control.Text;
|
||||
}
|
||||
|
||||
if (control is CheckBox)
|
||||
{
|
||||
inParams[control.Tag.ToString()] = ((CheckBox) control).Checked.ToString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ManagementBaseObject outParams = _mObject.InvokeMethod(_method.Name, inParams, null);
|
||||
|
||||
if (outParams != null && outParams.Properties.Count > 0)
|
||||
{
|
||||
ManagementBaseObjectW outParamsW = new ManagementBaseObjectW(outParams);
|
||||
propertyGridOutParams.SelectedObject = outParamsW;
|
||||
_clipboardText = outParams.GetText(TextFormat.Mof).Replace("\n", "\r\n");
|
||||
SetStatusBar("Successfully executed method.", MessageCategory.Info);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetStatusBar("Successfully executed method. No output parameters.", MessageCategory.Info);
|
||||
}
|
||||
|
||||
returnString = "Successfully executed method " + _method.Name + " of object " + _mObject.Path.RelativePath;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
SetStatusBar("Method Execution Failed. Error: " + ex.Message, MessageCategory.Error);
|
||||
returnString = "Failed to execute method " + _method.Name + " of object " + _mObject.Path.RelativePath + ". Error: " + ex.Message;
|
||||
}
|
||||
finally
|
||||
{
|
||||
WmiExplorer parentForm = (WmiExplorer) this.Owner;
|
||||
parentForm.Log(returnString);
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonCopyOutput_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!String.IsNullOrEmpty(_clipboardText))
|
||||
Clipboard.SetText(_clipboardText);
|
||||
}
|
||||
|
||||
private void SetStatusBar(string text, MessageCategory messagecategory)
|
||||
{
|
||||
if (text != String.Empty)
|
||||
{
|
||||
toolStripLabel.BorderSides = ToolStripStatusLabelBorderSides.All;
|
||||
toolStripLabel.BorderStyle = Border3DStyle.SunkenInner;
|
||||
}
|
||||
else
|
||||
{
|
||||
toolStripLabel.BorderSides = ToolStripStatusLabelBorderSides.None;
|
||||
toolStripLabel.BorderStyle = Border3DStyle.Flat;
|
||||
}
|
||||
|
||||
toolStripLabel.Text = text;
|
||||
|
||||
switch (messagecategory)
|
||||
{
|
||||
case MessageCategory.Info:
|
||||
toolStripLabel.BackColor = Color.LightSteelBlue;
|
||||
break;
|
||||
|
||||
case MessageCategory.Action:
|
||||
toolStripLabel.BackColor = ColorCategory.Action;
|
||||
break;
|
||||
|
||||
case MessageCategory.Warn:
|
||||
toolStripLabel.BackColor = ColorCategory.Warn;
|
||||
break;
|
||||
|
||||
case MessageCategory.Cache:
|
||||
toolStripLabel.BackColor = ColorCategory.Cache;
|
||||
break;
|
||||
|
||||
case MessageCategory.Error:
|
||||
toolStripLabel.BackColor = ColorCategory.Error;
|
||||
break;
|
||||
|
||||
case MessageCategory.Sms:
|
||||
toolStripLabel.BackColor = ColorCategory.Sms;
|
||||
break;
|
||||
|
||||
case MessageCategory.None:
|
||||
toolStripLabel.BackColor = ColorCategory.None;
|
||||
break;
|
||||
|
||||
default:
|
||||
toolStripLabel.BackColor = ColorCategory.Unknown;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
123
WmiExplorer/Forms/Form_ExecMethod.resx
Normal file
123
WmiExplorer/Forms/Form_ExecMethod.resx
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
254
WmiExplorer/Forms/Form_Settings.Designer.cs
generated
Normal file
254
WmiExplorer/Forms/Form_Settings.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,254 @@
|
|||
namespace WmiExplorer.Forms
|
||||
{
|
||||
partial class Form_Settings
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.groupBoxSettings_General = new System.Windows.Forms.GroupBox();
|
||||
this.checkBoxSettings_RememberEnumOptions = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxSettings_RememberRecentPaths = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxSettings_PreserveLayout = new System.Windows.Forms.CheckBox();
|
||||
this.groupBoxSettings_Update = new System.Windows.Forms.GroupBox();
|
||||
this.labelUpdate_LastUpdateCheck = new System.Windows.Forms.Label();
|
||||
this.textBoxSettings_UpdateCheckInterval = new System.Windows.Forms.TextBox();
|
||||
this.labelUpdate_CheckInterval = new System.Windows.Forms.Label();
|
||||
this.checkBoxSettings_CheckForUpdates = new System.Windows.Forms.CheckBox();
|
||||
this.groupBoxSettings_Caching = new System.Windows.Forms.GroupBox();
|
||||
this.textBoxSettings_CacheAge = new System.Windows.Forms.TextBox();
|
||||
this.labelCaching_CacheAge = new System.Windows.Forms.Label();
|
||||
this.buttonSettings_Save = new System.Windows.Forms.Button();
|
||||
this.buttonSettings_Cancel = new System.Windows.Forms.Button();
|
||||
this.groupBoxSettings_General.SuspendLayout();
|
||||
this.groupBoxSettings_Update.SuspendLayout();
|
||||
this.groupBoxSettings_Caching.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// groupBoxSettings_General
|
||||
//
|
||||
this.groupBoxSettings_General.Controls.Add(this.checkBoxSettings_RememberEnumOptions);
|
||||
this.groupBoxSettings_General.Controls.Add(this.checkBoxSettings_RememberRecentPaths);
|
||||
this.groupBoxSettings_General.Controls.Add(this.checkBoxSettings_PreserveLayout);
|
||||
this.groupBoxSettings_General.Location = new System.Drawing.Point(12, 12);
|
||||
this.groupBoxSettings_General.Name = "groupBoxSettings_General";
|
||||
this.groupBoxSettings_General.Size = new System.Drawing.Size(460, 86);
|
||||
this.groupBoxSettings_General.TabIndex = 0;
|
||||
this.groupBoxSettings_General.TabStop = false;
|
||||
this.groupBoxSettings_General.Text = "General";
|
||||
//
|
||||
// checkBoxSettings_RememberEnumOptions
|
||||
//
|
||||
this.checkBoxSettings_RememberEnumOptions.AutoSize = true;
|
||||
this.checkBoxSettings_RememberEnumOptions.Checked = global::WmiExplorer.Properties.Settings.Default.bRememberEnumOptions;
|
||||
this.checkBoxSettings_RememberEnumOptions.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBoxSettings_RememberEnumOptions.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::WmiExplorer.Properties.Settings.Default, "bRememberEnumOptions", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBoxSettings_RememberEnumOptions.Location = new System.Drawing.Point(6, 65);
|
||||
this.checkBoxSettings_RememberEnumOptions.Name = "checkBoxSettings_RememberEnumOptions";
|
||||
this.checkBoxSettings_RememberEnumOptions.Size = new System.Drawing.Size(271, 17);
|
||||
this.checkBoxSettings_RememberEnumOptions.TabIndex = 2;
|
||||
this.checkBoxSettings_RememberEnumOptions.Text = "Remember Class and Instance Enumeration Options";
|
||||
this.checkBoxSettings_RememberEnumOptions.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBoxSettings_RememberRecentPaths
|
||||
//
|
||||
this.checkBoxSettings_RememberRecentPaths.AutoSize = true;
|
||||
this.checkBoxSettings_RememberRecentPaths.Checked = global::WmiExplorer.Properties.Settings.Default.bRememberRecentPaths;
|
||||
this.checkBoxSettings_RememberRecentPaths.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBoxSettings_RememberRecentPaths.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::WmiExplorer.Properties.Settings.Default, "bRememberRecentPaths", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBoxSettings_RememberRecentPaths.Location = new System.Drawing.Point(6, 42);
|
||||
this.checkBoxSettings_RememberRecentPaths.Name = "checkBoxSettings_RememberRecentPaths";
|
||||
this.checkBoxSettings_RememberRecentPaths.Size = new System.Drawing.Size(313, 17);
|
||||
this.checkBoxSettings_RememberRecentPaths.TabIndex = 1;
|
||||
this.checkBoxSettings_RememberRecentPaths.Text = "Remember previously connected Computer names and paths";
|
||||
this.checkBoxSettings_RememberRecentPaths.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBoxSettings_PreserveLayout
|
||||
//
|
||||
this.checkBoxSettings_PreserveLayout.AutoSize = true;
|
||||
this.checkBoxSettings_PreserveLayout.Checked = global::WmiExplorer.Properties.Settings.Default.bPreserveLayout;
|
||||
this.checkBoxSettings_PreserveLayout.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBoxSettings_PreserveLayout.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::WmiExplorer.Properties.Settings.Default, "bPreserveLayout", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBoxSettings_PreserveLayout.Location = new System.Drawing.Point(6, 19);
|
||||
this.checkBoxSettings_PreserveLayout.Name = "checkBoxSettings_PreserveLayout";
|
||||
this.checkBoxSettings_PreserveLayout.Size = new System.Drawing.Size(447, 17);
|
||||
this.checkBoxSettings_PreserveLayout.TabIndex = 0;
|
||||
this.checkBoxSettings_PreserveLayout.Text = "Remember UI Layout when application closes (Window Size, Location and Splitter Wi" +
|
||||
"dth)";
|
||||
this.checkBoxSettings_PreserveLayout.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBoxSettings_Update
|
||||
//
|
||||
this.groupBoxSettings_Update.Controls.Add(this.labelUpdate_LastUpdateCheck);
|
||||
this.groupBoxSettings_Update.Controls.Add(this.textBoxSettings_UpdateCheckInterval);
|
||||
this.groupBoxSettings_Update.Controls.Add(this.labelUpdate_CheckInterval);
|
||||
this.groupBoxSettings_Update.Controls.Add(this.checkBoxSettings_CheckForUpdates);
|
||||
this.groupBoxSettings_Update.Location = new System.Drawing.Point(12, 156);
|
||||
this.groupBoxSettings_Update.Name = "groupBoxSettings_Update";
|
||||
this.groupBoxSettings_Update.Size = new System.Drawing.Size(460, 71);
|
||||
this.groupBoxSettings_Update.TabIndex = 1;
|
||||
this.groupBoxSettings_Update.TabStop = false;
|
||||
this.groupBoxSettings_Update.Text = "Application Updates";
|
||||
//
|
||||
// labelUpdate_LastUpdateCheck
|
||||
//
|
||||
this.labelUpdate_LastUpdateCheck.AutoSize = true;
|
||||
this.labelUpdate_LastUpdateCheck.Location = new System.Drawing.Point(240, 41);
|
||||
this.labelUpdate_LastUpdateCheck.Name = "labelUpdate_LastUpdateCheck";
|
||||
this.labelUpdate_LastUpdateCheck.Size = new System.Drawing.Size(105, 13);
|
||||
this.labelUpdate_LastUpdateCheck.TabIndex = 3;
|
||||
this.labelUpdate_LastUpdateCheck.Text = "Last Update Check: ";
|
||||
//
|
||||
// textBoxSettings_UpdateCheckInterval
|
||||
//
|
||||
this.textBoxSettings_UpdateCheckInterval.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::WmiExplorer.Properties.Settings.Default, "UpdateCheckIntervalInDays", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.textBoxSettings_UpdateCheckInterval.Location = new System.Drawing.Point(174, 38);
|
||||
this.textBoxSettings_UpdateCheckInterval.Name = "textBoxSettings_UpdateCheckInterval";
|
||||
this.textBoxSettings_UpdateCheckInterval.Size = new System.Drawing.Size(60, 20);
|
||||
this.textBoxSettings_UpdateCheckInterval.TabIndex = 2;
|
||||
this.textBoxSettings_UpdateCheckInterval.Text = global::WmiExplorer.Properties.Settings.Default.UpdateCheckIntervalInDays;
|
||||
//
|
||||
// labelUpdate_CheckInterval
|
||||
//
|
||||
this.labelUpdate_CheckInterval.AutoSize = true;
|
||||
this.labelUpdate_CheckInterval.Location = new System.Drawing.Point(6, 41);
|
||||
this.labelUpdate_CheckInterval.Name = "labelUpdate_CheckInterval";
|
||||
this.labelUpdate_CheckInterval.Size = new System.Drawing.Size(162, 13);
|
||||
this.labelUpdate_CheckInterval.TabIndex = 1;
|
||||
this.labelUpdate_CheckInterval.Text = "Update Check Interval (In Days):";
|
||||
//
|
||||
// checkBoxSettings_CheckForUpdates
|
||||
//
|
||||
this.checkBoxSettings_CheckForUpdates.AutoSize = true;
|
||||
this.checkBoxSettings_CheckForUpdates.Checked = global::WmiExplorer.Properties.Settings.Default.bCheckForUpdates;
|
||||
this.checkBoxSettings_CheckForUpdates.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::WmiExplorer.Properties.Settings.Default, "bCheckForUpdates", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBoxSettings_CheckForUpdates.Location = new System.Drawing.Point(9, 19);
|
||||
this.checkBoxSettings_CheckForUpdates.Name = "checkBoxSettings_CheckForUpdates";
|
||||
this.checkBoxSettings_CheckForUpdates.Size = new System.Drawing.Size(227, 17);
|
||||
this.checkBoxSettings_CheckForUpdates.TabIndex = 0;
|
||||
this.checkBoxSettings_CheckForUpdates.Text = "Automatically check for updates on launch";
|
||||
this.checkBoxSettings_CheckForUpdates.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBoxSettings_Caching
|
||||
//
|
||||
this.groupBoxSettings_Caching.Controls.Add(this.textBoxSettings_CacheAge);
|
||||
this.groupBoxSettings_Caching.Controls.Add(this.labelCaching_CacheAge);
|
||||
this.groupBoxSettings_Caching.Location = new System.Drawing.Point(12, 104);
|
||||
this.groupBoxSettings_Caching.Name = "groupBoxSettings_Caching";
|
||||
this.groupBoxSettings_Caching.Size = new System.Drawing.Size(460, 46);
|
||||
this.groupBoxSettings_Caching.TabIndex = 2;
|
||||
this.groupBoxSettings_Caching.TabStop = false;
|
||||
this.groupBoxSettings_Caching.Text = "Caching";
|
||||
//
|
||||
// textBoxSettings_CacheAge
|
||||
//
|
||||
this.textBoxSettings_CacheAge.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::WmiExplorer.Properties.Settings.Default, "CacheAgeInMinutes", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.textBoxSettings_CacheAge.Location = new System.Drawing.Point(133, 16);
|
||||
this.textBoxSettings_CacheAge.Name = "textBoxSettings_CacheAge";
|
||||
this.textBoxSettings_CacheAge.Size = new System.Drawing.Size(60, 20);
|
||||
this.textBoxSettings_CacheAge.TabIndex = 1;
|
||||
this.textBoxSettings_CacheAge.Text = global::WmiExplorer.Properties.Settings.Default.CacheAgeInMinutes;
|
||||
//
|
||||
// labelCaching_CacheAge
|
||||
//
|
||||
this.labelCaching_CacheAge.AutoSize = true;
|
||||
this.labelCaching_CacheAge.Location = new System.Drawing.Point(6, 19);
|
||||
this.labelCaching_CacheAge.Name = "labelCaching_CacheAge";
|
||||
this.labelCaching_CacheAge.Size = new System.Drawing.Size(121, 13);
|
||||
this.labelCaching_CacheAge.TabIndex = 0;
|
||||
this.labelCaching_CacheAge.Text = "Cache Age (In Minutes):";
|
||||
//
|
||||
// buttonSettings_Save
|
||||
//
|
||||
this.buttonSettings_Save.Location = new System.Drawing.Point(295, 241);
|
||||
this.buttonSettings_Save.Margin = new System.Windows.Forms.Padding(10);
|
||||
this.buttonSettings_Save.Name = "buttonSettings_Save";
|
||||
this.buttonSettings_Save.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonSettings_Save.TabIndex = 3;
|
||||
this.buttonSettings_Save.Text = "Ok";
|
||||
this.buttonSettings_Save.UseVisualStyleBackColor = true;
|
||||
this.buttonSettings_Save.Click += new System.EventHandler(this.buttonSettings_Save_Click);
|
||||
//
|
||||
// buttonSettings_Cancel
|
||||
//
|
||||
this.buttonSettings_Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.buttonSettings_Cancel.Location = new System.Drawing.Point(390, 241);
|
||||
this.buttonSettings_Cancel.Margin = new System.Windows.Forms.Padding(10);
|
||||
this.buttonSettings_Cancel.Name = "buttonSettings_Cancel";
|
||||
this.buttonSettings_Cancel.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonSettings_Cancel.TabIndex = 4;
|
||||
this.buttonSettings_Cancel.Text = "Cancel";
|
||||
this.buttonSettings_Cancel.UseVisualStyleBackColor = true;
|
||||
this.buttonSettings_Cancel.Click += new System.EventHandler(this.buttonSettings_Cancel_Click);
|
||||
//
|
||||
// Form_Settings
|
||||
//
|
||||
this.AcceptButton = this.buttonSettings_Save;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.AutoSize = true;
|
||||
this.CancelButton = this.buttonSettings_Cancel;
|
||||
this.ClientSize = new System.Drawing.Size(484, 276);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.buttonSettings_Cancel);
|
||||
this.Controls.Add(this.buttonSettings_Save);
|
||||
this.Controls.Add(this.groupBoxSettings_Caching);
|
||||
this.Controls.Add(this.groupBoxSettings_Update);
|
||||
this.Controls.Add(this.groupBoxSettings_General);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.Name = "Form_Settings";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "Preferences";
|
||||
this.Load += new System.EventHandler(this.Form_Settings_Load);
|
||||
this.groupBoxSettings_General.ResumeLayout(false);
|
||||
this.groupBoxSettings_General.PerformLayout();
|
||||
this.groupBoxSettings_Update.ResumeLayout(false);
|
||||
this.groupBoxSettings_Update.PerformLayout();
|
||||
this.groupBoxSettings_Caching.ResumeLayout(false);
|
||||
this.groupBoxSettings_Caching.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox groupBoxSettings_General;
|
||||
private System.Windows.Forms.GroupBox groupBoxSettings_Update;
|
||||
private System.Windows.Forms.CheckBox checkBoxSettings_PreserveLayout;
|
||||
private System.Windows.Forms.CheckBox checkBoxSettings_RememberRecentPaths;
|
||||
private System.Windows.Forms.TextBox textBoxSettings_UpdateCheckInterval;
|
||||
private System.Windows.Forms.Label labelUpdate_CheckInterval;
|
||||
private System.Windows.Forms.CheckBox checkBoxSettings_CheckForUpdates;
|
||||
private System.Windows.Forms.GroupBox groupBoxSettings_Caching;
|
||||
private System.Windows.Forms.TextBox textBoxSettings_CacheAge;
|
||||
private System.Windows.Forms.Label labelCaching_CacheAge;
|
||||
private System.Windows.Forms.Button buttonSettings_Save;
|
||||
private System.Windows.Forms.Button buttonSettings_Cancel;
|
||||
private System.Windows.Forms.Label labelUpdate_LastUpdateCheck;
|
||||
private System.Windows.Forms.CheckBox checkBoxSettings_RememberEnumOptions;
|
||||
}
|
||||
}
|
||||
58
WmiExplorer/Forms/Form_Settings.cs
Normal file
58
WmiExplorer/Forms/Form_Settings.cs
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.Windows.Forms;
|
||||
using WmiExplorer.Properties;
|
||||
|
||||
namespace WmiExplorer.Forms
|
||||
{
|
||||
public partial class Form_Settings : Form
|
||||
{
|
||||
private readonly string _currentCacheAge;
|
||||
|
||||
public Form_Settings()
|
||||
{
|
||||
InitializeComponent();
|
||||
_currentCacheAge = textBoxSettings_CacheAge.Text;
|
||||
}
|
||||
|
||||
private void buttonSettings_Save_Click(object sender, EventArgs e)
|
||||
{
|
||||
bool restartRequired = false;
|
||||
|
||||
if (Settings.Default.CacheAgeInMinutes != _currentCacheAge)
|
||||
{
|
||||
if (MessageBox.Show(
|
||||
"New Cache Age will take effect after restarting WMI Explorer.\n\n" +
|
||||
"Would you like to restart WMI Explorer now ?",
|
||||
"WMI Explorer - Restart Required",
|
||||
MessageBoxButtons.YesNo,
|
||||
MessageBoxIcon.Question
|
||||
) == DialogResult.Yes)
|
||||
{
|
||||
restartRequired = true;
|
||||
}
|
||||
}
|
||||
|
||||
Settings.Default.Save();
|
||||
|
||||
if (restartRequired)
|
||||
{
|
||||
Process.Start(Application.ExecutablePath);
|
||||
Application.Exit();
|
||||
}
|
||||
|
||||
Close();
|
||||
}
|
||||
|
||||
private void buttonSettings_Cancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
private void Form_Settings_Load(object sender, EventArgs e)
|
||||
{
|
||||
labelUpdate_LastUpdateCheck.Text += Settings.Default.LastUpdateCheck.ToString(CultureInfo.InvariantCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
120
WmiExplorer/Forms/Form_Settings.resx
Normal file
120
WmiExplorer/Forms/Form_Settings.resx
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
89
WmiExplorer/Forms/Form_ShowMof.Designer.cs
generated
Normal file
89
WmiExplorer/Forms/Form_ShowMof.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
namespace WmiExplorer
|
||||
{
|
||||
sealed partial class Form_ShowMof
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.textBoxShowMOF = new System.Windows.Forms.TextBox();
|
||||
this.buttonCloseMof = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// textBoxShowMOF
|
||||
//
|
||||
this.textBoxShowMOF.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.textBoxShowMOF.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.textBoxShowMOF.ImeMode = System.Windows.Forms.ImeMode.Off;
|
||||
this.textBoxShowMOF.Location = new System.Drawing.Point(12, 13);
|
||||
this.textBoxShowMOF.Multiline = true;
|
||||
this.textBoxShowMOF.Name = "textBoxShowMOF";
|
||||
this.textBoxShowMOF.ReadOnly = true;
|
||||
this.textBoxShowMOF.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||
this.textBoxShowMOF.Size = new System.Drawing.Size(510, 253);
|
||||
this.textBoxShowMOF.TabIndex = 0;
|
||||
this.textBoxShowMOF.TabStop = false;
|
||||
this.textBoxShowMOF.WordWrap = false;
|
||||
//
|
||||
// buttonCloseMof
|
||||
//
|
||||
this.buttonCloseMof.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
|
||||
this.buttonCloseMof.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.buttonCloseMof.Location = new System.Drawing.Point(227, 274);
|
||||
this.buttonCloseMof.Name = "buttonCloseMof";
|
||||
this.buttonCloseMof.Size = new System.Drawing.Size(75, 25);
|
||||
this.buttonCloseMof.TabIndex = 1;
|
||||
this.buttonCloseMof.Text = "Close";
|
||||
this.buttonCloseMof.UseVisualStyleBackColor = true;
|
||||
this.buttonCloseMof.Click += new System.EventHandler(this.buttonCloseMOF_Click);
|
||||
//
|
||||
// Form_ShowMof
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.CancelButton = this.buttonCloseMof;
|
||||
this.ClientSize = new System.Drawing.Size(534, 311);
|
||||
this.Controls.Add(this.buttonCloseMof);
|
||||
this.Controls.Add(this.textBoxShowMOF);
|
||||
this.Name = "Form_ShowMof";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "MOF";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TextBox textBoxShowMOF;
|
||||
private System.Windows.Forms.Button buttonCloseMof;
|
||||
}
|
||||
}
|
||||
26
WmiExplorer/Forms/Form_ShowMof.cs
Normal file
26
WmiExplorer/Forms/Form_ShowMof.cs
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace WmiExplorer
|
||||
{
|
||||
|
||||
public sealed partial class Form_ShowMof : Form
|
||||
{
|
||||
public Form_ShowMof(string mofText)
|
||||
{
|
||||
InitializeComponent();
|
||||
textBoxShowMOF.Text = "\r\n" + mofText;
|
||||
}
|
||||
|
||||
private void buttonCloseMOF_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
120
WmiExplorer/Forms/Form_ShowMof.resx
Normal file
120
WmiExplorer/Forms/Form_ShowMof.resx
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
87
WmiExplorer/Forms/Form_Update.Designer.cs
generated
Normal file
87
WmiExplorer/Forms/Form_Update.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
namespace WmiExplorer.Forms
|
||||
{
|
||||
partial class Form_Update
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.richTextBoxUpdate = new System.Windows.Forms.RichTextBox();
|
||||
this.buttonCancelHidden = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// richTextBoxUpdate
|
||||
//
|
||||
this.richTextBoxUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.richTextBoxUpdate.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.richTextBoxUpdate.Cursor = System.Windows.Forms.Cursors.IBeam;
|
||||
this.richTextBoxUpdate.Location = new System.Drawing.Point(12, 12);
|
||||
this.richTextBoxUpdate.Name = "richTextBoxUpdate";
|
||||
this.richTextBoxUpdate.ReadOnly = true;
|
||||
this.richTextBoxUpdate.Size = new System.Drawing.Size(471, 156);
|
||||
this.richTextBoxUpdate.TabIndex = 0;
|
||||
this.richTextBoxUpdate.Text = "";
|
||||
this.richTextBoxUpdate.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.richTextBoxUpdate_LinkClicked);
|
||||
//
|
||||
// buttonCancelHidden
|
||||
//
|
||||
this.buttonCancelHidden.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
|
||||
this.buttonCancelHidden.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.buttonCancelHidden.Location = new System.Drawing.Point(193, 174);
|
||||
this.buttonCancelHidden.Name = "buttonCancelHidden";
|
||||
this.buttonCancelHidden.Size = new System.Drawing.Size(100, 25);
|
||||
this.buttonCancelHidden.TabIndex = 1;
|
||||
this.buttonCancelHidden.Text = "OK";
|
||||
this.buttonCancelHidden.UseVisualStyleBackColor = true;
|
||||
this.buttonCancelHidden.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// Form_Update
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.AutoSize = true;
|
||||
this.CancelButton = this.buttonCancelHidden;
|
||||
this.ClientSize = new System.Drawing.Size(484, 211);
|
||||
this.Controls.Add(this.richTextBoxUpdate);
|
||||
this.Controls.Add(this.buttonCancelHidden);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "Form_Update";
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "WMI Explorer Update";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.RichTextBox richTextBoxUpdate;
|
||||
private System.Windows.Forms.Button buttonCancelHidden;
|
||||
}
|
||||
}
|
||||
43
WmiExplorer/Forms/Form_Update.cs
Normal file
43
WmiExplorer/Forms/Form_Update.cs
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using WmiExplorer.Properties;
|
||||
|
||||
namespace WmiExplorer.Forms
|
||||
{
|
||||
public partial class Form_Update : Form
|
||||
{
|
||||
public Form_Update(bool bUpdateAvailable, string changelog)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
if (bUpdateAvailable)
|
||||
{
|
||||
Font font = new Font("Arial", 10, FontStyle.Bold);
|
||||
richTextBoxUpdate.SelectionFont = font;
|
||||
richTextBoxUpdate.AppendText("A new version of WMI Explorer is available!\n");
|
||||
richTextBoxUpdate.AppendText(Settings.Default.UpdateUrl + "\n\n");
|
||||
richTextBoxUpdate.AppendText(changelog);
|
||||
richTextBoxUpdate.SelectionStart = 0;
|
||||
richTextBoxUpdate.ScrollToCaret();
|
||||
}
|
||||
else
|
||||
{
|
||||
Width = 400;
|
||||
Height = 200;
|
||||
richTextBoxUpdate.AppendText("You are running the latest version!");
|
||||
}
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
private void richTextBoxUpdate_LinkClicked(object sender, LinkClickedEventArgs e)
|
||||
{
|
||||
Process.Start(e.LinkText);
|
||||
}
|
||||
}
|
||||
}
|
||||
120
WmiExplorer/Forms/Form_Update.resx
Normal file
120
WmiExplorer/Forms/Form_Update.resx
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
BIN
WmiExplorer/Icons/Database CMYK .ico
Normal file
BIN
WmiExplorer/Icons/Database CMYK .ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 345 KiB |
BIN
WmiExplorer/Icons/Icojam-Blue-Bits-Database-search.ico
Normal file
BIN
WmiExplorer/Icons/Icojam-Blue-Bits-Database-search.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 189 KiB |
26
WmiExplorer/Program.cs
Normal file
26
WmiExplorer/Program.cs
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace WmiExplorer
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
if (Environment.OSVersion.Version.Major >= 6) SetProcessDPIAware();
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new WmiExplorer());
|
||||
}
|
||||
|
||||
[System.Runtime.InteropServices.DllImport("user32.dll")]
|
||||
private static extern bool SetProcessDPIAware();
|
||||
|
||||
}
|
||||
}
|
||||
36
WmiExplorer/Properties/AssemblyInfo.cs
Normal file
36
WmiExplorer/Properties/AssemblyInfo.cs
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("WMI Explorer")]
|
||||
[assembly: AssemblyDescription("WMI Explorer is a utility intended to provide the ability to browse and view WMI objects in a single pane of view.")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("WMI Explorer")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2014 by Vinay Pamnani")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("0186a05f-638a-4422-9992-412b499e60e4")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("2.0.0.2")]
|
||||
[assembly: AssemblyFileVersion("2.0.0.2")]
|
||||
63
WmiExplorer/Properties/Resources.Designer.cs
generated
Normal file
63
WmiExplorer/Properties/Resources.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.34014
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WmiExplorer.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WmiExplorer.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
120
WmiExplorer/Properties/Resources.resx
Normal file
120
WmiExplorer/Properties/Resources.resx
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
260
WmiExplorer/Properties/Settings.Designer.cs
generated
Normal file
260
WmiExplorer/Properties/Settings.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,260 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WmiExplorer.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool bCheckForUpdates {
|
||||
get {
|
||||
return ((bool)(this["bCheckForUpdates"]));
|
||||
}
|
||||
set {
|
||||
this["bCheckForUpdates"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool bPreserveLayout {
|
||||
get {
|
||||
return ((bool)(this["bPreserveLayout"]));
|
||||
}
|
||||
set {
|
||||
this["bPreserveLayout"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool bRememberEnumOptions {
|
||||
get {
|
||||
return ((bool)(this["bRememberEnumOptions"]));
|
||||
}
|
||||
set {
|
||||
this["bRememberEnumOptions"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool bRememberRecentPaths {
|
||||
get {
|
||||
return ((bool)(this["bRememberRecentPaths"]));
|
||||
}
|
||||
set {
|
||||
this["bRememberRecentPaths"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool bUpdateAvailable {
|
||||
get {
|
||||
return ((bool)(this["bUpdateAvailable"]));
|
||||
}
|
||||
set {
|
||||
this["bUpdateAvailable"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool bUpgradeSettings {
|
||||
get {
|
||||
return ((bool)(this["bUpgradeSettings"]));
|
||||
}
|
||||
set {
|
||||
this["bUpgradeSettings"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("60")]
|
||||
public string CacheAgeInMinutes {
|
||||
get {
|
||||
return ((string)(this["CacheAgeInMinutes"]));
|
||||
}
|
||||
set {
|
||||
this["CacheAgeInMinutes"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("None")]
|
||||
public global::WmiExplorer.Classes.EnumOptions EnumOptionsFlags {
|
||||
get {
|
||||
return ((global::WmiExplorer.Classes.EnumOptions)(this["EnumOptionsFlags"]));
|
||||
}
|
||||
set {
|
||||
this["EnumOptionsFlags"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("1970-01-01")]
|
||||
public global::System.DateTime LastUpdateCheck {
|
||||
get {
|
||||
return ((global::System.DateTime)(this["LastUpdateCheck"]));
|
||||
}
|
||||
set {
|
||||
this["LastUpdateCheck"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
public global::System.Collections.Specialized.StringCollection RecentPaths {
|
||||
get {
|
||||
return ((global::System.Collections.Specialized.StringCollection)(this["RecentPaths"]));
|
||||
}
|
||||
set {
|
||||
this["RecentPaths"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("220")]
|
||||
public int SplitterDistanceNamespaces {
|
||||
get {
|
||||
return ((int)(this["SplitterDistanceNamespaces"]));
|
||||
}
|
||||
set {
|
||||
this["SplitterDistanceNamespaces"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("200")]
|
||||
public int SplitterDistanceClasses {
|
||||
get {
|
||||
return ((int)(this["SplitterDistanceClasses"]));
|
||||
}
|
||||
set {
|
||||
this["SplitterDistanceClasses"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("180")]
|
||||
public int SplitterDistanceInstances {
|
||||
get {
|
||||
return ((int)(this["SplitterDistanceInstances"]));
|
||||
}
|
||||
set {
|
||||
this["SplitterDistanceInstances"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("7")]
|
||||
public string UpdateCheckIntervalInDays {
|
||||
get {
|
||||
return ((string)(this["UpdateCheckIntervalInDays"]));
|
||||
}
|
||||
set {
|
||||
this["UpdateCheckIntervalInDays"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("https://raw.githubusercontent.com/vinaypamnani/wmie2/master/WmiExplorer/releases." +
|
||||
"xml")]
|
||||
public string UpdateCheckUrl {
|
||||
get {
|
||||
return ((string)(this["UpdateCheckUrl"]));
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("http://wmie.azurewebsites.net/releases.xml")]
|
||||
public string UpdateCheckUrlBackup {
|
||||
get {
|
||||
return ((string)(this["UpdateCheckUrlBackup"]));
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("https://github.com/vinaypamnani/wmie2/releases")]
|
||||
public string UpdateUrl {
|
||||
get {
|
||||
return ((string)(this["UpdateUrl"]));
|
||||
}
|
||||
set {
|
||||
this["UpdateUrl"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string WindowPlacement {
|
||||
get {
|
||||
return ((string)(this["WindowPlacement"]));
|
||||
}
|
||||
set {
|
||||
this["WindowPlacement"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool bEnumModeAsync {
|
||||
get {
|
||||
return ((bool)(this["bEnumModeAsync"]));
|
||||
}
|
||||
set {
|
||||
this["bEnumModeAsync"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool bSmsMode {
|
||||
get {
|
||||
return ((bool)(this["bSmsMode"]));
|
||||
}
|
||||
set {
|
||||
this["bSmsMode"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
66
WmiExplorer/Properties/Settings.settings
Normal file
66
WmiExplorer/Properties/Settings.settings
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="WmiExplorer.Properties" GeneratedClassName="Settings">
|
||||
<Profiles />
|
||||
<Settings>
|
||||
<Setting Name="bCheckForUpdates" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="bPreserveLayout" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="bRememberEnumOptions" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="bRememberRecentPaths" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="bUpdateAvailable" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="bUpgradeSettings" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="CacheAgeInMinutes" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">60</Value>
|
||||
</Setting>
|
||||
<Setting Name="EnumOptionsFlags" Type="WmiExplorer.Classes.EnumOptions" Scope="User">
|
||||
<Value Profile="(Default)">None</Value>
|
||||
</Setting>
|
||||
<Setting Name="LastUpdateCheck" Type="System.DateTime" Scope="User">
|
||||
<Value Profile="(Default)">1970-01-01</Value>
|
||||
</Setting>
|
||||
<Setting Name="RecentPaths" Type="System.Collections.Specialized.StringCollection" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="SplitterDistanceNamespaces" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">220</Value>
|
||||
</Setting>
|
||||
<Setting Name="SplitterDistanceClasses" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">200</Value>
|
||||
</Setting>
|
||||
<Setting Name="SplitterDistanceInstances" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">180</Value>
|
||||
</Setting>
|
||||
<Setting Name="UpdateCheckIntervalInDays" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">7</Value>
|
||||
</Setting>
|
||||
<Setting Name="UpdateCheckUrl" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">https://raw.githubusercontent.com/vinaypamnani/wmie2/master/WmiExplorer/releases.xml</Value>
|
||||
</Setting>
|
||||
<Setting Name="UpdateCheckUrlBackup" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">http://wmie.azurewebsites.net/releases.xml</Value>
|
||||
</Setting>
|
||||
<Setting Name="UpdateUrl" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">https://github.com/vinaypamnani/wmie2/releases</Value>
|
||||
</Setting>
|
||||
<Setting Name="WindowPlacement" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="bEnumModeAsync" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="bSmsMode" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
69
WmiExplorer/Sms/SmsClient.cs
Normal file
69
WmiExplorer/Sms/SmsClient.cs
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
using System.Linq;
|
||||
using System.Management;
|
||||
|
||||
namespace WmiExplorer.Sms
|
||||
{
|
||||
public class SmsClient
|
||||
{
|
||||
public SmsClient(string clientNamespacePath, ConnectionOptions connection)
|
||||
{
|
||||
ClientNamespacePath = clientNamespacePath;
|
||||
SmsClientClassPath = clientNamespacePath + ":SMS_Client";
|
||||
Connection = connection;
|
||||
IsClientInstalled = IsInstalled();
|
||||
}
|
||||
|
||||
public string ClientNamespacePath { get; set; }
|
||||
|
||||
public ConnectionOptions Connection { get; set; }
|
||||
|
||||
public bool IsClientInstalled { get; set; }
|
||||
|
||||
public bool IsConnected { get; set; }
|
||||
|
||||
public ManagementClass SmsClientClass { get; set; }
|
||||
|
||||
public string SmsClientClassPath { get; set; }
|
||||
|
||||
public bool IsInstalled()
|
||||
{
|
||||
const string queryString = "SELECT * FROM meta_class WHERE __Class = 'SMS_Client'";
|
||||
|
||||
ManagementScope scope = new ManagementScope(ClientNamespacePath, Connection);
|
||||
ObjectQuery query = new ObjectQuery(queryString);
|
||||
EnumerationOptions eOption = new EnumerationOptions();
|
||||
ManagementObjectSearcher queryClientSearcher = new ManagementObjectSearcher(scope, query, eOption);
|
||||
|
||||
ManagementObject ccmClient = (from ManagementClass mClass in queryClientSearcher.Get()
|
||||
orderby mClass.Path.ClassName
|
||||
select mClass).FirstOrDefault();
|
||||
|
||||
return ccmClient != null;
|
||||
}
|
||||
|
||||
//public void InitiateClientAction(SmsClientAction smsClientAction)
|
||||
//{
|
||||
// try
|
||||
// {
|
||||
// ManagementBaseObject inParams = SmsClientClass.GetMethodParameters("TriggerSchedule");
|
||||
// inParams["sScheduleId"] = smsClientAction.Id;
|
||||
// ManagementBaseObject outParams = SmsClientClass.InvokeMethod("TriggerSchedule", inParams, null);
|
||||
|
||||
// if (outParams != null)
|
||||
// {
|
||||
// MessageBox.Show("Successfully triggered " + smsClientAction.DisplayName + ".",
|
||||
// "Initiate Client Action",
|
||||
// MessageBoxButtons.OK,
|
||||
// MessageBoxIcon.Information);
|
||||
// }
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// MessageBox.Show("Failed to trigger " + smsClientAction.DisplayName + ". Error: " + ex.Message,
|
||||
// "Initiate Client Action",
|
||||
// MessageBoxButtons.OK,
|
||||
// MessageBoxIcon.Error);
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
31
WmiExplorer/Sms/SmsClientAction.cs
Normal file
31
WmiExplorer/Sms/SmsClientAction.cs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
namespace WmiExplorer.Sms
|
||||
{
|
||||
public static class ActionGroup
|
||||
{
|
||||
public static string ApplicationEvaluation = "Application Evaluation";
|
||||
public static string Default = "Default";
|
||||
public static string Endpoint = "Endpoint Protection";
|
||||
public static string Inventory = "Inventory";
|
||||
public static string LocationServices = "Location Services";
|
||||
public static string Other = "Other";
|
||||
public static string Policy = "Policy";
|
||||
public static string SoftwareUpdates = "Software Updates";
|
||||
public static string StateMessage = "State Messages";
|
||||
}
|
||||
|
||||
public class SmsClientAction
|
||||
{
|
||||
public SmsClientAction(string id, string displayName, string group = "Default")
|
||||
{
|
||||
Id = id;
|
||||
DisplayName = displayName;
|
||||
Group = group;
|
||||
}
|
||||
|
||||
public string DisplayName { get; set; }
|
||||
|
||||
public string Group { get; set; }
|
||||
|
||||
public string Id { get; set; }
|
||||
}
|
||||
}
|
||||
213
WmiExplorer/Sms/SmsClientActions.cs
Normal file
213
WmiExplorer/Sms/SmsClientActions.cs
Normal file
|
|
@ -0,0 +1,213 @@
|
|||
namespace WmiExplorer.Sms
|
||||
{
|
||||
internal class SmsClientActions
|
||||
{
|
||||
public SmsClientActions()
|
||||
{
|
||||
}
|
||||
|
||||
public static SmsClientAction HardwareInventory
|
||||
{
|
||||
// {00000000-0000-0000-0000-000000000101} is the same
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000001}", "Hardware Inventory Cycle", ActionGroup.Inventory); }
|
||||
}
|
||||
|
||||
public static SmsClientAction SoftwareInventory
|
||||
{
|
||||
// {00000000-0000-0000-0000-000000000102} is the same
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000002}", "Software Inventory Cycle", ActionGroup.Inventory); }
|
||||
}
|
||||
|
||||
public static SmsClientAction HeartbeatDiscovery
|
||||
{
|
||||
// {00000000-0000-0000-0000-000000000103} is the same
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000003}", "Discovery Data Collection Cycle", ActionGroup.Inventory); }
|
||||
}
|
||||
|
||||
public static SmsClientAction FileCollection
|
||||
{
|
||||
// {00000000-0000-0000-0000-000000000104} is the same
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000010}", "File Collection Cycle", ActionGroup.Inventory); }
|
||||
}
|
||||
|
||||
public static SmsClientAction IdmifCollection
|
||||
{
|
||||
// {00000000-0000-0000-0000-000000000105} is the same
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000011}", "IDMIF Collection Cycle", ActionGroup.Inventory); }
|
||||
}
|
||||
|
||||
public static SmsClientAction ClientMachineAuthentication
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000012}", "Client Machine Authentication", ActionGroup.Other); }
|
||||
}
|
||||
|
||||
public static SmsClientAction MachineAssignmentsRequest
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000021}", "Request Machine Assignments", ActionGroup.Policy); }
|
||||
}
|
||||
|
||||
public static SmsClientAction MachineAssignmentsEvaluate
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000022}", "Evaluate Machine Assignments", ActionGroup.Policy); }
|
||||
}
|
||||
|
||||
public static SmsClientAction LocationRefreshDefaultMp
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000023}", "Refresh Default MP", ActionGroup.LocationServices); }
|
||||
}
|
||||
|
||||
public static SmsClientAction LocationRefreshLocations
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000024}", "Refresh Locations", ActionGroup.LocationServices); }
|
||||
}
|
||||
|
||||
public static SmsClientAction LocationTimeoutRefresh
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000025}", "Timeout Refresh", ActionGroup.LocationServices); }
|
||||
}
|
||||
|
||||
public static SmsClientAction UserAssignmentsRequest
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000026}", "Request User Assignments", ActionGroup.Policy); }
|
||||
}
|
||||
|
||||
public static SmsClientAction UserAssignmentsEvaluate
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000027}", "Evaluate User Assignments", ActionGroup.Policy); }
|
||||
}
|
||||
|
||||
public static SmsClientAction SoftwareMeterUsageReport
|
||||
{
|
||||
// {00000000-0000-0000-0000-000000000106}
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000031}", "Software Metering Usage Report Cycle", ActionGroup.Inventory); }
|
||||
}
|
||||
|
||||
public static SmsClientAction SourceUpdateCycle
|
||||
{
|
||||
// {00000000-0000-0000-0000-000000000107}
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000032}", "Windows Installer Source List Update Cycle", ActionGroup.Other); }
|
||||
}
|
||||
|
||||
public static SmsClientAction ProxySettingsCacheClear
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000037}", "Clear Proxy Settings Cache", ActionGroup.Other); }
|
||||
}
|
||||
|
||||
public static SmsClientAction PolicyAgentCleanupMachine
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000040}", "Policy Agent Cleanup Cycle (Machine)", ActionGroup.Policy); }
|
||||
}
|
||||
|
||||
public static SmsClientAction PolicyAgentCleanupUser
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000041}", "Policy Agent Cleanup Cycle (User)", ActionGroup.Policy); }
|
||||
}
|
||||
|
||||
public static SmsClientAction PolicyAgentValidateMachine
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000042}", "Validate Machine Policy/Assignment", ActionGroup.Policy); }
|
||||
}
|
||||
|
||||
public static SmsClientAction PolicyAgentValidateUser
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000043}", "Validate User Policy/Assignment", ActionGroup.Policy); }
|
||||
}
|
||||
|
||||
public static SmsClientAction RetryRefreshCertificate
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000051}", "Retry/Refresh Certificates in AD on MP", ActionGroup.Other); }
|
||||
}
|
||||
|
||||
public static SmsClientAction SoftwareUpdateInstallSchedule
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000063}", "Software Updates Install Schedule", ActionGroup.SoftwareUpdates); }
|
||||
}
|
||||
|
||||
public static SmsClientAction Nap
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000071}", "Network Access Protection Schedule", ActionGroup.Other); }
|
||||
}
|
||||
|
||||
public static SmsClientAction SoftwareUpdateAssignmentEvaluation
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000108}", "Software Updates Assignment Evaluation Cycle", ActionGroup.SoftwareUpdates); }
|
||||
}
|
||||
|
||||
public static SmsClientAction DcmPolicy
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000110}", "DCM Policy", ActionGroup.Other); }
|
||||
}
|
||||
|
||||
public static SmsClientAction StateMessageSendUnsent
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000111}", "Send Unsent State Messages", ActionGroup.StateMessage); }
|
||||
}
|
||||
|
||||
public static SmsClientAction StateMessagePolicyCacheClean
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000112}", "State System Policy Cache Clean", ActionGroup.StateMessage); }
|
||||
}
|
||||
|
||||
public static SmsClientAction SoftwareUpdateScan
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000113}", "Software Update Scan Cycle", ActionGroup.SoftwareUpdates); }
|
||||
}
|
||||
|
||||
public static SmsClientAction SoftwareUpdateStore
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000114}", "Software Update Store Refresh", ActionGroup.SoftwareUpdates); }
|
||||
}
|
||||
|
||||
public static SmsClientAction StateMessageSendHigh
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000115}", "Bulk Send High Priority", ActionGroup.StateMessage); }
|
||||
}
|
||||
|
||||
public static SmsClientAction StateMessageSendLow
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000116}", "Bulk Send Low Priority", ActionGroup.StateMessage); }
|
||||
}
|
||||
|
||||
public static SmsClientAction AmtStatusCheck
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000120}", "AMT Status Check Policy", ActionGroup.Other); }
|
||||
}
|
||||
|
||||
public static SmsClientAction ApplicationPolicy
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000121}", "Application Manager Machine Policy", ActionGroup.ApplicationEvaluation); }
|
||||
}
|
||||
|
||||
public static SmsClientAction ApplicationPolicyUser
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000122}", "Application Manager User Policy", ActionGroup.ApplicationEvaluation); }
|
||||
}
|
||||
|
||||
public static SmsClientAction ApplicationPolicyGlobal
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000123}", "Application Manager Global Evaluation Policy", ActionGroup.ApplicationEvaluation); }
|
||||
}
|
||||
|
||||
public static SmsClientAction PowerMgmtSummarize
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000131}", "Power Management Summarizer", ActionGroup.Other); }
|
||||
}
|
||||
|
||||
public static SmsClientAction EpDeploymentReevaluate
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000221}", "Endpoint Protection Deployment Re-Evaluate", ActionGroup.Endpoint); }
|
||||
}
|
||||
|
||||
public static SmsClientAction EpAmPolicyReevaluate
|
||||
{
|
||||
get { return new SmsClientAction("{00000000-0000-0000-0000-000000000222}", "Endpoint Protection AM Policy Re-Evaluate", ActionGroup.Endpoint); }
|
||||
}
|
||||
|
||||
// Excluded Actions:
|
||||
// {00000000-0000-0000-0000-000000000061}
|
||||
// {00000000-0000-0000-0000-000000000062}
|
||||
// {00000000-0000-0000-0000-000000000101}
|
||||
// {00000000-0000-0000-0000-000000000109}
|
||||
// {00000000-0000-0000-0000-000000000223}
|
||||
}
|
||||
}
|
||||
17
WmiExplorer/Updater/Update.cs
Normal file
17
WmiExplorer/Updater/Update.cs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
using System;
|
||||
|
||||
namespace WmiExplorer.Updater
|
||||
{
|
||||
internal class Update
|
||||
{
|
||||
public Uri ChangeLogUrl { get; set; }
|
||||
|
||||
public DateTimeOffset LastUpdatedTime { get; set; }
|
||||
|
||||
public ReleaseStatus ReleaseStatus { get; set; }
|
||||
|
||||
public Uri Url { get; set; }
|
||||
|
||||
public Version Version { get; set; }
|
||||
}
|
||||
}
|
||||
21
WmiExplorer/Updater/UpdateEnums.cs
Normal file
21
WmiExplorer/Updater/UpdateEnums.cs
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
using System;
|
||||
|
||||
namespace WmiExplorer.Updater
|
||||
{
|
||||
[Flags]
|
||||
public enum ReleaseStatus
|
||||
{
|
||||
None = 0,
|
||||
Stable = 1,
|
||||
Beta = 2,
|
||||
Alpha = 4
|
||||
}
|
||||
|
||||
public enum UpdateFilter
|
||||
{
|
||||
None = 0,
|
||||
Stable = ReleaseStatus.Stable,
|
||||
Beta = Stable | ReleaseStatus.Beta,
|
||||
Alpha = Beta | ReleaseStatus.Alpha
|
||||
}
|
||||
}
|
||||
93
WmiExplorer/Updater/UpdaterService.cs
Normal file
93
WmiExplorer/Updater/UpdaterService.cs
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Reflection;
|
||||
using System.ServiceModel.Syndication;
|
||||
using System.Xml;
|
||||
|
||||
namespace WmiExplorer.Updater
|
||||
{
|
||||
internal class UpdaterService
|
||||
{
|
||||
public static Update GetUpdateFromSyndicationItem(SyndicationItem item)
|
||||
{
|
||||
Debug.Assert(item != null);
|
||||
|
||||
var update = new Update();
|
||||
|
||||
// Update Version
|
||||
Version version;
|
||||
if (Version.TryParse(item.Title.Text, out version))
|
||||
{
|
||||
update.Version = version;
|
||||
}
|
||||
|
||||
// Last Updated Time
|
||||
update.LastUpdatedTime = item.LastUpdatedTime;
|
||||
|
||||
// Update Url
|
||||
var updateLink = item.Links.FirstOrDefault(
|
||||
l => String.IsNullOrWhiteSpace(l.RelationshipType)
|
||||
|| l.RelationshipType.Equals("alternate", StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
if (updateLink != null)
|
||||
{
|
||||
update.Url = updateLink.GetAbsoluteUri();
|
||||
}
|
||||
|
||||
// Change Log Url
|
||||
var changeLogLink = item.Links.FirstOrDefault(
|
||||
l => String.IsNullOrWhiteSpace(l.RelationshipType)
|
||||
|| l.RelationshipType.Equals("related", StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
if (changeLogLink != null)
|
||||
{
|
||||
update.ChangeLogUrl = changeLogLink.GetAbsoluteUri();
|
||||
}
|
||||
|
||||
// Update Release Status
|
||||
update.ReleaseStatus
|
||||
= item.Categories.Aggregate(
|
||||
ReleaseStatus.None,
|
||||
(rs, c) =>
|
||||
{
|
||||
ReleaseStatus releaseStatus;
|
||||
|
||||
if (Enum.TryParse<ReleaseStatus>(c.Name, true, out releaseStatus))
|
||||
{
|
||||
rs |= releaseStatus;
|
||||
}
|
||||
|
||||
return rs;
|
||||
});
|
||||
|
||||
return update;
|
||||
}
|
||||
|
||||
public Update CheckForUpdatesAsync(string updateUrl, UpdateFilter updateFilter)
|
||||
{
|
||||
Debug.Assert(!String.IsNullOrWhiteSpace(updateUrl));
|
||||
|
||||
Update latestUpdate = null;
|
||||
|
||||
var formatter = new Atom10FeedFormatter();
|
||||
var reader = XmlReader.Create(updateUrl);
|
||||
formatter.ReadFrom(reader);
|
||||
|
||||
latestUpdate = (from i in formatter.Feed.Items
|
||||
let u = GetUpdateFromSyndicationItem(i)
|
||||
where u.Version > Assembly.GetExecutingAssembly().GetName().Version
|
||||
&& ((int)updateFilter & (int)u.ReleaseStatus) != 0
|
||||
orderby u.LastUpdatedTime descending
|
||||
select u).FirstOrDefault();
|
||||
|
||||
return latestUpdate;
|
||||
}
|
||||
|
||||
public string GetChangeLog(Uri changeLogUrl)
|
||||
{
|
||||
return new WebClient().DownloadString(changeLogUrl);
|
||||
}
|
||||
}
|
||||
}
|
||||
2072
WmiExplorer/WmiExplorer.Designer.cs
generated
Normal file
2072
WmiExplorer/WmiExplorer.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load diff
2769
WmiExplorer/WmiExplorer.Functions.Designer.cs
generated
Normal file
2769
WmiExplorer/WmiExplorer.Functions.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load diff
1623
WmiExplorer/WmiExplorer.cs
Normal file
1623
WmiExplorer/WmiExplorer.cs
Normal file
File diff suppressed because it is too large
Load diff
237
WmiExplorer/WmiExplorer.csproj
Normal file
237
WmiExplorer/WmiExplorer.csproj
Normal file
|
|
@ -0,0 +1,237 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{781647DE-1788-4B7C-9289-D0323FDF562A}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>WmiExplorer</RootNamespace>
|
||||
<AssemblyName>WMIExplorer</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
<SccProjectName>SAK</SccProjectName>
|
||||
<SccLocalPath>SAK</SccLocalPath>
|
||||
<SccAuxPath>SAK</SccAuxPath>
|
||||
<SccProvider>SAK</SccProvider>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DocumentationFile>
|
||||
</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup />
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>Icons\Icojam-Blue-Bits-Database-search.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Net" />
|
||||
<Reference Include="System.Runtime.Caching" />
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.XML" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Classes\Helpers.cs" />
|
||||
<Compile Include="Classes\Enums.cs" />
|
||||
<Compile Include="Classes\ListViewColumnSorter.cs" />
|
||||
<Compile Include="Classes\ListViewExtensions.cs" />
|
||||
<Compile Include="Classes\ManagementBaseObjectPropertyDescriptor.cs" />
|
||||
<Compile Include="Classes\ManagementBaseObjectW.cs" />
|
||||
<Compile Include="Classes\ManagementBaseObjectWConverter.cs" />
|
||||
<Compile Include="Classes\ManagementObjectW.cs" />
|
||||
<Compile Include="Classes\MouseWheelMessageFilter.cs" />
|
||||
<Compile Include="Classes\NativeMethods.cs" />
|
||||
<Compile Include="Classes\ObserverHandler.cs" />
|
||||
<Compile Include="Classes\ToolStripItemCollectionSorter.cs" />
|
||||
<Compile Include="Classes\Utilities.cs" />
|
||||
<Compile Include="Classes\WindowPlacement.cs" />
|
||||
<Compile Include="Classes\WmiClass.cs" />
|
||||
<Compile Include="Classes\WmiInstance.cs" />
|
||||
<Compile Include="Classes\WmiMethod.cs" />
|
||||
<Compile Include="Classes\WmiNamespace.cs" />
|
||||
<Compile Include="Classes\WmiNode.cs" />
|
||||
<Compile Include="Forms\Form_About.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Form_About.Designer.cs">
|
||||
<DependentUpon>Form_About.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Form_ConnectAs.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Form_ConnectAs.Designer.cs">
|
||||
<DependentUpon>Form_ConnectAs.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Form_DisplayText.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Form_DisplayText.Designer.cs">
|
||||
<DependentUpon>Form_DisplayText.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Form_ExecMethod.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Form_ExecMethod.Designer.cs">
|
||||
<DependentUpon>Form_ExecMethod.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Form_Settings.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Form_Settings.Designer.cs">
|
||||
<DependentUpon>Form_Settings.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Form_ShowMof.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Form_ShowMof.designer.cs">
|
||||
<DependentUpon>Form_ShowMof.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Form_Update.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Form_Update.Designer.cs">
|
||||
<DependentUpon>Form_Update.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Sms\SmsClient.cs" />
|
||||
<Compile Include="Sms\SmsClientAction.cs" />
|
||||
<Compile Include="Sms\SmsClientActions.cs" />
|
||||
<Compile Include="Updater\Update.cs" />
|
||||
<Compile Include="Updater\UpdateEnums.cs" />
|
||||
<Compile Include="Updater\UpdaterService.cs" />
|
||||
<Compile Include="WmiExplorer.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="WmiExplorer.Designer.cs">
|
||||
<DependentUpon>WmiExplorer.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="WmiExplorer.Functions.Designer.cs">
|
||||
<DependentUpon>WmiExplorer.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="Forms\Form_About.resx">
|
||||
<DependentUpon>Form_About.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Form_ConnectAs.resx">
|
||||
<DependentUpon>Form_ConnectAs.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Form_DisplayText.resx">
|
||||
<DependentUpon>Form_DisplayText.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Form_ExecMethod.resx">
|
||||
<DependentUpon>Form_ExecMethod.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Form_Settings.resx">
|
||||
<DependentUpon>Form_Settings.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Form_ShowMof.resx">
|
||||
<DependentUpon>Form_ShowMof.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Form_Update.resx">
|
||||
<DependentUpon>Form_Update.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="WmiExplorer.resx">
|
||||
<DependentUpon>WmiExplorer.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<None Include="app.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.4.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 4.5</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="ChangeLog.txt">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Icons\Database CMYK .ico" />
|
||||
<Content Include="Icons\Icojam-Blue-Bits-Database-search.ico" />
|
||||
<Content Include="releases.xml">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="releases.azure.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
3383
WmiExplorer/WmiExplorer.resx
Normal file
3383
WmiExplorer/WmiExplorer.resx
Normal file
File diff suppressed because it is too large
Load diff
76
WmiExplorer/app.config
Normal file
76
WmiExplorer/app.config
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||
<section name="WmiExplorer.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||
<section name="WmiExplorer.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
<userSettings>
|
||||
<WmiExplorer.Properties.Settings>
|
||||
<setting name="bCheckForUpdates" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="bPreserveLayout" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="bRememberEnumOptions" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="bRememberRecentPaths" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="bUpdateAvailable" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="bUpgradeSettings" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="CacheAgeInMinutes" serializeAs="String">
|
||||
<value>60</value>
|
||||
</setting>
|
||||
<setting name="EnumOptionsFlags" serializeAs="String">
|
||||
<value>None</value>
|
||||
</setting>
|
||||
<setting name="LastUpdateCheck" serializeAs="String">
|
||||
<value>1970-01-01</value>
|
||||
</setting>
|
||||
<setting name="SplitterDistanceNamespaces" serializeAs="String">
|
||||
<value>220</value>
|
||||
</setting>
|
||||
<setting name="SplitterDistanceClasses" serializeAs="String">
|
||||
<value>200</value>
|
||||
</setting>
|
||||
<setting name="SplitterDistanceInstances" serializeAs="String">
|
||||
<value>180</value>
|
||||
</setting>
|
||||
<setting name="UpdateCheckIntervalInDays" serializeAs="String">
|
||||
<value>7</value>
|
||||
</setting>
|
||||
<setting name="UpdateUrl" serializeAs="String">
|
||||
<value>https://github.com/vinaypamnani/wmie2/releases</value>
|
||||
</setting>
|
||||
<setting name="WindowPlacement" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="bEnumModeAsync" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="bSmsMode" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
</WmiExplorer.Properties.Settings>
|
||||
</userSettings>
|
||||
<applicationSettings>
|
||||
<WmiExplorer.Properties.Settings>
|
||||
<setting name="UpdateCheckUrl" serializeAs="String">
|
||||
<value>https://raw.githubusercontent.com/vinaypamnani/wmie2/master/WmiExplorer/releases.xml</value>
|
||||
</setting>
|
||||
<setting name="UpdateCheckUrlBackup" serializeAs="String">
|
||||
<value>http://wmie.azurewebsites.net/releases.xml</value>
|
||||
</setting>
|
||||
</WmiExplorer.Properties.Settings>
|
||||
</applicationSettings>
|
||||
</configuration>
|
||||
17
WmiExplorer/releases.azure.xml
Normal file
17
WmiExplorer/releases.azure.xml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<title type="text">WMI Explorer</title>
|
||||
<id>https://github.com/vinaypamnani/wmie2/releases</id>
|
||||
<updated>2017-10-05T00:00:00Z</updated>
|
||||
<author>
|
||||
<name>Vinay Pamnani</name>
|
||||
</author>
|
||||
<entry>
|
||||
<id>https://github.com/vinaypamnani/wmie2/releases</id>
|
||||
<title type="text">2.0.0.2</title>
|
||||
<updated>2017-10-05T00:00:00Z</updated>
|
||||
<link rel="alternate" href="https://github.com/vinaypamnani/wmie2/releases" />
|
||||
<link rel="related" href="http://wmie.azurewebsites.net/changelog.txt" />
|
||||
<category term="Stable" />
|
||||
</entry>
|
||||
</feed>
|
||||
17
WmiExplorer/releases.xml
Normal file
17
WmiExplorer/releases.xml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<title type="text">WMI Explorer</title>
|
||||
<id>https://github.com/vinaypamnani/wmie2/releases</id>
|
||||
<updated>2017-10-05T00:00:00Z</updated>
|
||||
<author>
|
||||
<name>Vinay Pamnani</name>
|
||||
</author>
|
||||
<entry>
|
||||
<id>https://github.com/vinaypamnani/wmie2/releases</id>
|
||||
<title type="text">2.0.0.2</title>
|
||||
<updated>2017-10-05T00:00:00Z</updated>
|
||||
<link rel="alternate" href="https://github.com/vinaypamnani/wmie2/releases" />
|
||||
<link rel="related" href="https://raw.githubusercontent.com/vinaypamnani/wmie2/master/WmiExplorer/ChangeLog.txt" />
|
||||
<category term="Stable" />
|
||||
</entry>
|
||||
</feed>
|
||||
Loading…
Reference in a new issue