Introduction
AidaNet is an XPath script that displays XML information generated by the freeware tool Aida32. AIDA32 is a professional system information, diagnostics and benchmarking program running on Win32 platforms. It extracts details of all components of the PC. It can display information on the screen, print it, or save it to file in various formats like HTML, CSV or XML. For corporate users, AIDA32 offers command-line switches, network audit and audit statistics, remote system information and network management. Ensure you have at least version 3.83.
Download Aida here.
Background
The good news is that you don't have to run Aida on each computer to make the inventory.
How to create XML files? (The demo is provided with only a few XML files).
Just add this line in the user logon script:
shell "cmd /c \\Myserver\aida\aida32 /R \\Myserver\aida\Reports\$hostname
/XML /AUDIT /SILENT"
Then just wait a few days, ensuring that everyone login on the network and you can know what programs are installed on your company, who has the bigger RAM, what is the most used 'default printer' and so on.
Using the code
AidaNet doesn't have any knowledge of Aida XML structure. The program uses a script to display information. For each useful information you want to display, add an Alias
entry on the AidaNet.xml file using XPath string. Since an XML can be complex (the case of Aida files), AidaNet allows you to define sub Alias
:
<Config>
<FolderPath>..\\..\\sample</FolderPath>
<Alias Path="/Report">
<Alias Path="Page[Title='Summary']">
<Alias Path="Group[Title='Computer']">
<Alias Name="OS_NAME" Title="Name"
Path="Item[Title='Operating System']/Value" />
<Alias Name="OS_SP" Title="Service Pack"
Path="Item[Title='OS Service Pack']/Value" />
<Alias Name="PC_NAME" Title="PC Name"
Path="Item[Title='Computer Name']/Value" />
<Alias Name="USER_NAME" Title="User name"
Path="Item[Title='User Name']/Value" />
</Alias>
<Alias Path="Group[Title='Motherboard']">
<Alias Name="CPU_FULL" Title="CPU Name"
Path="Item[Title='CPU Type']/Value" />
<Alias Name="RAM" Title="RAM"
Path="Item[Title='System Memory']/Value" />
</Alias>
</Alias>
</Alias>
<Group Name="OS" Title="Operating Systems">
<Alias Name="OS_NAME"/>
<Alias Name="OS_LANG"/>
<Alias Name="OS_SP"/>
</Group>
</Config>
The OS_NAME
Alias
is then a sub alias of the Group[Title='Computer']
path, itself a path. This Alias
is also part of the Group Name="OS"
. All Alias
of a group represent a single value. You can't filter computer having a specific service pack, without associating it with the type of OS (NT4 SP1 and XP SP1 are different). It's possible to group Alias
that don't start at the same level, but alias occurrences must be the same.
Since version 1.5, Group
tags can be defined only in the Config
tag, no more in Alias
tags. Alias
name
attributes in Group
tag are also changed to Text
. Sorry for those that already use 1.0 version.
Starting demo
The first thing to do is to modify aidaNet.xml file. The Config
/FolderPath
value should point to where you placed your Aida XML files. Then start the program and let start collecting info with the File/Analyse menu. AidaNet will try to find the aidaNet.xml file in the current folder. If not found it will open it 2 folder levels up.
Using the demo
The "filter selection" grid (on top) displays all Aliases and Groups names. The "corresponding files" grid (on bottom) columns grids and the "detail" grid (on right) are defined in the same XML script file (FileGrid
tag and DetailGrid
tag respectively). "Filter selection" and "corresponding files" columns grids can be sorted.
Exporting results
You can export data in the 3 grids to a text file. Tabulation is used to separate fields on the same line. The export saves only what is visible on the grids, because saving all PC information where 'Internet Explorer " is installed can produce many pages of report.
Points of Interest
AidaNet can be used for other kind of XML files, like XML book files. It's a nice example of XPath use. It's a FLWOR statement (FOR-LET-WHERE-ORDER-RETURN) like program (still not available).
This program uses 2 ways to read XML files:
XPathDocument
to read AIDA files. XPath is then used to retrieve values.
- XML schema. Microsoft XSD can generate C# code from schema. See XML Data Files, XML Serialization, and .NET or Search for "XML serialization" in CodeProject for more information.
Improvements
Next version will provide an XPath editor.
ListView bonus
The project comes with a Listview
helper class that allows column sort with up and down sort indicator picture. This class is not another ListView
subclass, you can use it with existing code. Sample use:
using ListViewHelper
...
public ListViewSorter MySorter ;
...
MySorter = new ListViewSorter (MyListView) ;
MyListView.ListViewItemSorter = MySorter ;
MyListView.TableArrows = imageList1 ;
...
MySorter.SortBy (MyColumnHeader , SortOrder.Ascending)
The same class allows to resize all columns. Microsoft provides const for optimizing column width based on the header OR items, but not both. ResizeColumns
function resizes all columns to the largest width.
Sample use:
MySorter.ResizeColumns() ;
History
- February 2004 : Version 1.0
- March 2004 : Version 1.5 : Added validations, text export and uses XML serialization